跳梅花桩解题思路

Redraiment的走法

http://www.nowcoder.com/questionTerminal/24e6243b9f0446b081b1d6d32f2aa3aa

/*
首先这个算法不是我想出来的,是看了别人的算法后添加了自己的理解
这个题目的解题思路和正常思维不同
不是将每个位置视为起点,而是视为终点,求出该位置的最大上升次数
再求出所有位置的最大上升次数的最大值
*/

include

using namespace std;

define max(a,b) (a>b)?a:b

int main(){
int n;
while(cin >> n){
int array[65536] = {0};//输入缓存
int times[65536] = {0};//对应每个位置之前的最大上升次数
int max_times = 1;//最大上升次数,输出值

    for (int i = 0; i < n; i++)
        cin >> array[i];

    times[0] = 1;
    for (int i = 1; i < n; i++){
        times[i] = 1;
        for(int j = 0; j < i; j++){
            if (array[i]>array[j])
                times[i] = max(times[i], times[j]+1);
        }
        if (times[i] > max_times)
            max_times = times[i];
    }
    cout << max_times << endl;
}
return 0;

}

全部评论

相关推荐

西松屋:说明原部门有机会把
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-24 15:05
点赞 评论 收藏
分享
评论
11
5
分享

创作者周榜

更多
牛客网
牛客企业服务