乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      最長非遞增子集

       saxue000 2010-08-30

      #include<stdio.h>
      #define NUM 10
      int a[NUM];


      int b[NUM];//存放以a[i](0<=i<=a.length-1)為最后元素的最大遞減子串的長度。

      int k;//存放最大遞減子串最后一個元素的下標(biāo)

      //求出b[i]中最大的值(即是最大遞減子串的長度),并將其下標(biāo)存在k中
      int Max() {
          int temp = 0;
          for (int i = 0; i < NUM; i++) {
              if (b[i] > temp) {
                  temp = b[i];
                  k = i;
              }
          }
          return temp;
      }

      // 以a[i](0<=i<=a.length-1)為最后元素的最大遞增子串的長度存到b[i]中
      int Lis() {
          b[0] = 1;//以a[0]為最后元素的子串只有a[0],所以長度為1.
          int k;
          for (int i = 1; i < NUM; i++) {
              k = 0;
              for (int j = 0; j < i; j++) {
                  if (a[j] >= a[i] && k < b[j]) {
                  //比較所有小于a[i]并位于a[i]前面的最大子串的長度。比如6,2,5,3,那么以3結(jié)尾的最大子串長度
                  //等于:max{(大于3的元素有5,6)5的最大子串長度,6的最大子串長度}+1;
                      k = b[j];
                  }
              }
              b[i] = k + 1; 
          }
          return Max();
      }

      //從小到大輸出遞減子串
      void print(int index){
          printf("%d ",a[index]);  
          for (int i = 0; i < index; i++) {
              if (b[i] == b[index] - 1 && a[i] >= a[index]) {
                  print(i);
                  break;
              }
          }
      }

      void main(){

      for(int i = 0; i < NUM; i++)

      scanf("%d",&a[i]);


          printf("最大非遞增子串的長度為:%d\n",Lis());
          printf("最大遞增子串從小到大輸出為:\n");
          print(k);
      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多