<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      挑戰程序設計競賽 2.3章習題 poj 3176 Cow Bowling dp

      地址 http://poj.org/problem?id=3176

       

       經典動態規劃問題
      
      給出一個數值均在0~99之間的三角形
      
      請問從第一行的數字出發,每次可選擇下一行相鄰的兩個數字中的一個,請問達到底層的時候選擇的所有數字和最大是多少
      
      輸入 第一行一個數字N 表示三角形有N行,后面N行每行有1~N個空格隔開的數字
      
      輸出 一行 包含一個答案數字

      解法

      動態規劃

      因為每層每個點都有2中選擇(下一行相鄰的兩個點)

      而上一層到達該點的方法也有兩種

      n層三角形總的路徑又有2(n-1) 如果使用dfs求出全部路徑再找最大和,時間不允許

      但是我們注意到 上一層兩點arr[i-1][j]和arr[i-1][j+1] 到達arr[i][j]的時候 我們肯定選擇路徑和最大的方案

      同樣的 arr[i][j]到達下一層兩個的選擇arr[i+1][j] arr[i+1][j+1]中 我們也肯定選擇路徑和最大的方案 其余方案忽略

      雖然某層的路徑和最大比較難以確定,但是第0層選擇到第1層的方案是可以快速求得的

      然后第1層確定, 再來確定第2層也可以快速求得
      如此遞推 確定N層求N+1層的最大路徑和

       

      逆向觀察 如果三角形只有最下面兩層 

      那么上面一層每個點該如何選擇路徑使得路徑和最大也是可以快速求得

       

      配圖 

       

      // 1123555.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。
      //
      
      #include <iostream>
      #include <algorithm>
      
      using namespace std;
      
      
      /*
      Sample Input
      5
      7
      3 8
      8 1 0
      2 7 4 4
      4 5 2 6 5
      
      Sample Output
      30
      */
      
      const int N = 370;
      int arr[N][N];
      int n;
      
      int main()
      {
          cin >> n;
      
          for (int i = 0; i < n; i++) {
              for (int j = 0; j <= i; j++) {
                  cin >> arr[i][j];
              }
          }
      
      #if 1
          for (int i = n - 2; i >= 0; i--) {
              for (int j = 0; j <= i; j++) {
                  int val = max(arr[i+1][j], arr[i+1][j + 1]);
                  arr[i][j] += val;
              }
          }
          cout << arr[0][0] << endl;
      #else
          for (int i = 1; i < n; i++) {
              for (int j = 0; j <= i; j++) {
                  int val = arr[i][j];
                  if (j < i)
                  {
                      arr[i][j] = max(arr[i][j], val + arr[i - 1][j]);
                  }
                  if (j > 0) {
                      arr[i][j] = max(arr[i][j], val + arr[i - 1][j - 1]);
                  }
              }
          }
          int ans = 0;
          for (int i = 0; i < n; i++) {
              ans = max(ans, arr[n - 1][i]);
          }
      
          cout << ans << endl;
      #endif
      
      
      
          return 0;
      }

      posted on 2021-03-31 15:35  itdef  閱讀(78)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 亚洲精品区二区三区蜜桃| 亚洲精品一区二区制服| 26uuu另类亚洲欧美日本| 亚洲欧洲日产国码久在线| 1000部拍拍拍18勿入免费视频| 国产精品三级一区二区三区| 中国美女a级毛片| 人妻在线中文字幕| 精品久久欧美熟妇www| 在线观看潮喷失禁大喷水无码| 国产成人午夜福利在线播放| 成人一区二区不卡国产| 99久久久无码国产精品免费 | 在线a级毛片无码免费真人| 国内在线视频一区二区三区| 在线播放国产精品三级网| 激情伊人五月天久久综合| 九九视频热最新在线视频| 亚洲国产精品一区二区第一页| 丁香婷婷色综合激情五月| 韩国福利片在线观看播放| 亚洲综合天堂一区二区三区| 制服丝袜中文字幕在线| 免费无码久久成人网站入口| 久久精品娱乐亚洲领先| 亚洲国产超清无码专区| 日本一卡2卡3卡4卡无卡免费| 四虎永久免费很黄的视频| 97精品人妻系列无码人妻| 欧洲亚洲国内老熟女超碰| 长腿校花无力呻吟娇喘的视频| 国产成人精品一区二区秒拍1o| 国内熟女中文字幕第一页| 男女性高爱潮免费网站| 亚洲偷自拍国综合| 97超级碰碰碰久久久久| 亚洲大尺度无码无码专线| 五月丁香激激情亚洲综合| 国产精品中文一区二区| 精品国产高清中文字幕| 国产精品麻豆成人av网|