跳梅花桩解题思路
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;}
