Description
6月的雨总是来得莫名其妙淅淅沥沥根本停不下来,就在这种让人烦躁的季节,MWY毅然决然的选择通过计算他自己定义的“最大上升天数”来判断自己是否需要甩了CJC。“最大上升天数”的意思是,在连续的十天内,如果下雨时长数组是{2,1,3,4,5,6,7,8,1,10},第一天时长大于第二天,所以{2,1}是下降的,而{2}或{1}是上升的并且只有一个元素,所以前两天的最大上升天数是1。前三天的上升天数是2,应为{2,3}或者{1,3}(请注意{1,3}也是符合的)是上升的并且在上升的序列里面有两个元素。请帮MWY写一个计算最大上升函数的代码。
Input
十个整数N,用空格隔开(1<=N<=24)
Output
输出最大上升天数。
Samples
input Copy
12 11 7 24 1 7 9 8 10 22
output Copy
5
//代码ac了的
#include <stdio.h>
void shuru(int w1[],int w2[]);
void zhi(int w1[],int w2[]);
int max1(int w2[],int max);
void print(int w2[]);
int w1[10]={0};
int w2[10]={0};
int main(void)
{
int max=0,n;
shuru(w1,w2);
zhi(w1,w2);
n=max1(w2,max);
printf("%d\n",n);
return 0;
}
void shuru(int w1[],int w2[])
{
int i;
for(i=0;i<10;++i)
{
scanf("%d",&w1[i]);
w2[i]=1;
}
}
void zhi(int w1[],int w2[])
{
int i,j;
for(i=0;i<10;++i)
{
for(j=0;j<i;++j)
{
if(w1[i]>w1[j]&&w2[i]<=w2[j])
w2[i]=w2[j]+1;
}
}
}
int max1(int w2[],int max)
{
max=w2[0];
int i;
for(i=0;i<10;++i)
{
if(w2[i]>max) max=w2[i];
}
return max;
}
//用了dp的思想就是去记录数据,核心就是每遇到一个数就去判断他之前的数和他的大小,如果是他比前面的数大的话,就在他的权下,就判断此数的权和他谁大,因为这样就能够保证后面的都比前面的大,dp,还是没懂,下星期再写过,加油。