數塔問題(DP演算法)自底向上計算最大值

来源:http://www.cnblogs.com/geekvan/archive/2017/01/01/6240610.html
-Advertisement-
Play Games

Input 輸入數據首先包括一個整數C,表示測試實例的個數,每個測試實例的第一行是一個整數N(1 <= N <= 100),表示數塔的高度,接下來用N行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。 Output 對於每個測試實例,輸出可能得到的最大和,每個實例的輸出占一 ...


Input

輸入數據首先包括一個整數C,表示測試實例的個數,每個測試實例的第一行是一個整數N(1 <= N <= 100),表示數塔的高度,接下來用N行數字表示數塔,其中第i行有個i個整數,且所有的整數均在區間[0,99]內。

 

Output

 

對於每個測試實例,輸出可能得到的最大和,每個實例的輸出占一行。

 

Sample Input

 

5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5

 

Sample Output

 

30
  1 #include<iostream>
  2 #include<math.h>
  3 #include<malloc.h>
  4 using namespace std;
  5 
  6 int num=0;
  7 
  8 typedef struct Tree
  9 {
 10    int val;
 11    int max;
 12    struct Tree*left;//左分支節點
 13    struct Tree*right;//右分支節點
 14    struct Tree*sib;//兄弟節點
 15    struct Tree*next;//linenumber
 16    struct Tree*pre;//前繼行
 17 }Tree,*TreeNode;
 18 
 19 TreeNode first;
 20 
 21 
 22 void construction(int i,int j,int loc,int col)//構造樹形結構
 23 {
 24     int linenum;
 25     linenum=j;//return the linenumber;
 26 
 27     int k;
 28     if(linenum==1)
 29         first->val=i;
 30     else{
 31     TreeNode p;
 32     p=first;
 33 
 34 /*    for(k=1;k<linenum-1;k++)//鎖定行
 35     {
 36         p=p->next;
 37     }*/
 38     while(p->next!=NULL)
 39         p=p->next;//鎖定行
 40 
 41     TreeNode q;
 42     q=(TreeNode)malloc(sizeof(Tree));
 43     q->val=i;
 44     q->left=NULL;
 45     q->right=NULL;
 46     q->next=NULL;
 47     q->sib=NULL;
 48     //賦值
 49 
 50     
 51     if(col==1)//處理第一列的情況
 52     {
 53         p->next=q;
 54         q->pre=p;
 55         q->sib=NULL;
 56         q->next=NULL;
 57     
 58 
 59     }
 60     else
 61     {
 62         if(col==2)
 63         {}
 64         else
 65         {
 66             while(p->sib!=NULL)
 67             {
 68         
 69             p=p->sib;
 70             }
 71         }
 72         
 73         p->sib=q;
 74         q->sib=NULL;
 75         
 76 
 77     }
 78 
 79 
 80 //返回上一行
 81     
 82     p=first;
 83     for(k=1;k<linenum-1;k++)//鎖定上一行
 84     {
 85         p=p->next;
 86     
 87     }
 88 //鎖定上一列的位置
 89     
 90     for(k=1;k<col-1;k++)
 91     {
 92     
 93         if(p->sib!=NULL)
 94             p=p->sib;
 95     }
 96 
 97     if(col==1)
 98     {
 99         
100         p->left=q;
101     
102     }
103     else if(col==linenum)//debug
104     {
105         p->right=q;
106         
107     }
108 
109     else
110     {
111         
112         p->right=q;
113     
114         p=p->sib;
115     
116         p->left=q;
117 
118     }
119 
120 
121  
122 
123 
124     }
125 
126 }
127 
128 
129 
130 void cal(TreeNode p)
131 {    
132     while(p->next!=NULL)
133         p=p->next; 
134 
135     p=p->pre;
136 
137     TreeNode q,f;
138     q=p;
139     while(q!=NULL)
140     {
141         f=q;
142         while(f!=NULL)
143         {
144             int m;
145             m=f->left->val+f->val;
146             int n;
147             n=f->right->val+f->val;
148             if(m>n)
149                 f->val=m;
150             else
151                 f->val=n;
152             f=f->sib;
153 
154         }
155         q=q->pre;
156     }
157 
158 }
159 
160 int main()
161 {
162     int input,m;
163     first=(TreeNode)malloc(sizeof(Tree));
164     first->next=NULL;
165     first->sib=NULL;
166     first->left=NULL;
167     first->right=NULL;
168     first->pre=NULL;
169     //Initial the first node
170     cin>>input;
171     m=input;
172     int j=1;
173     for(int i=1;i<=m;i++)
174     {
175         for(int k=1;k<=i;k++)
176         {
177             int a1;
178             cin>>a1;
179             construction(a1,i,j,k);
180             j++;
181         }
182     }
183     
184     
185     
186 
187      cal(first);
188      cout<<first->val<<endl;
189     return 0;
190 }

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 網路電影免會員播放器 特色介紹網路電影免會員播放器是一款功能強大的VIP視頻免費播放器,讓用戶可以在多個媒體平臺上免費觀看VIP影片。支持愛奇藝、芒果、騰訊、等網站電影。無需解析,一鍵點擊即可線上播放。 使用方法 打開網站後,選擇一部電影,然後點播放,彈出播放器進行播放。 1.下載並運行軟體,選擇視 ...
  • 之前自己從來沒有做過發送郵箱的功能,前段時間項目需要,在找了很多帖子之後,終於實現了。 之後有整理了一下,寫了一個類。直接給類傳遞信息,就可以發送了。 這裡還需要說明的是,發送郵箱需要開通POP3/SMTP服務,否則QQ郵箱,網易郵箱等會報錯。接收的郵箱就不用開通啦,開通方法百度一下就知道啦。 ,直 ...
  • C 與C++相互發送消息 C 端: namespace CshapMessage { /// /// MainWindow.xaml 的交互邏輯 /// public partial class MainWindow : Window { IntPtr hwnd; const int WM_COPY ...
  • 問題描述: 一般調試wcf程式可以直接建一個單元測試,直接調介面。 但是,這次,我還要測試在介面內的代碼中看接收到的用戶名密碼是否正確,所以,單一的直接調用介面方法行不通, 然後就想辦法通過soapUI輸入用戶名和密碼調用介面調試。 解決方案: 1.建立IIS站點a,指向……src\WCF(右鍵項目 ...
  • 許多人都有各自的興趣,如打球、踢毽子、看書、看電視、玩游戲等等....我近來迷上了猜燈謎,於是業餘做了一個線上猜燈謎的網站:何問起謎語。先出個謎語讓你猜猜:不可缺一點(打一字)。可以線上猜:http://m.hovertree.com/miyu/bjae/j13e2e2e.htm,輸入答案,點擊“猜 ...
  • 劉海峰:國內知名微軟開源技術網站51Aspx 創始人,十年以上的Asp.net從業經驗,微軟MSDN特約講師、Teched講師、ImagineCup大賽評委、人大出版社研修班特約講師,曾多次受邀訪問美國西雅圖的微軟總部,2009年與業內知名MVP組建易縱互聯(北京)科技有限公司並任運營總監。現專註於 ...
  • 1. 適用場景 實現條件的過濾和查詢等功能。 2. 說明 跟SQL語句中的where作用相似,都起到了範圍的限定即過濾的作用,而判斷條件是緊跟後面的條件子句。where主要分為三種形式:簡單形式、條件形式、First()形式,下麵分別舉例測試一下: 2.1 簡單形式 例如:查詢在倫敦購買的訂單。 例 ...
  • 純粹是記錄一下自己在剛開始使用的時候遇到的一些坑,以及自己是怎樣通過配合redis來解決問題的。文章分為三個部分,一是怎樣跑起來,並且怎樣監控相關的隊列和任務;二是遇到的幾個坑;三是給一些自己配合redis使用的代碼示例。 一.celery使用: Ⅰ.把任務中間件伺服器跑起來,rabbitmq-se ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...