• HZNU2012图解


    传送门

    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 
    12 11 7 24 1 7 9 8 10 22
    output 
    5
     
    题意:在给出的十天中,找到一个(不连续但按顺序的)单调递增的最长子序列,输出这个子序列的长度。
     
    (尝试回忆了一下上个学期第一次看到这个题目的时候,觉得好简单,但是怎么写??数组不长,我们肉眼就能筛选出符合条件的最长子序列,可是要怎么写成代码呢)
     
    定义一个数组用于存放每天的下雨时长:
    当天数只有一天的时候,那么第一天(此处为a[0])本身,就是最长子序列,长度为1。

    当天数增加到两天,我们需要判断第二天的下雨时长是否大于第一天。发现并没有,那么这两天的最长子序列是a[0] 或 a[1],长度为1。

    同理增加到三天的时候,最长子序列是a[0] 或 a[1] 或 a[2],长度为1。

    当天数增加到四天的时候,a[3]比前面任何一天都大,但之前的最长子序列都为1,则 a[3] 不管跟在哪个序列后面都行,最长子序列增长为2。

    五天。

    六天的时候,a[5] 大于 a[4],而 a[4]所在序列长度为1,a[5] 加入以后长度增加到2。

    七天的时候,a[6] 大于 a[2]、a[4]、a[5],而我们需要挑选其中最长的子序列,并将a[6]插到末尾即可,长度增加到3。

    同理八天的时候,将a[7] 插在允许的最长子序列之后,长度为3。

    九天。

    十天。

    通过这个图解过程,我们应该可以很容易地看出这个方法的主要思想,即在遍历数组的过程中,将数据插在最理想即最长的序列之后。要用代码实现这个方法,也不难,只要两重循环就能实现,不再赘述,直接看代码。

     1 #include<stdio.h>
     2 int main(){
     3     int a[10], b[10];
     4     int maxb=-1;
     5     
     6     for(int i=0; i<10; i++){
     7         scanf("%d", a+i);
     8         b[i] = 1;
     9     }    
    10     
    11     for(int i=0; i<10; i++)
    12         for(int j=0; j<i; j++)
    13             if(a[i]>a[j] && b[i]<=b[j])
    14                 b[i] = b[j] + 1;
    15                 
    16     for(int i=0; i<10; i++)
    17         if(b[i] > maxb)
    18             maxb = b[i];
    19             
    20     printf("%d
    ", maxb);
    21     return 0;
    22 }
  • 相关阅读:
    宏定义抽取单例
    谓词基本使用
    Xcode静态分析工具--Analyze
    [转载]CocoaPods管理第三方开源框架
    @import--iOS7新关键字
    iOS手势识别
    UINavigationController
    JSON解析--原生&AFN
    UITabBarController
    iOS APP EuclidStudy Service Support
  • 原文地址:https://www.cnblogs.com/0424lrn/p/13264394.html
Copyright © 2020-2023  润新知