基本動態規劃題集

觀察下面的數字金字塔。寫一個程序查找從最高點到底部任意處結束的路徑,使路徑經過數字的和最大。每一步可以從當前點走到左下方的點也可以到達右下方的點。

在上面的樣例中,從13到8到26到15到24的路徑產生了最大的和86。

【輸入】

第一個行包含R(1≤ R≤1000),表示行的數目。

后面每行為這個數字金字塔特定行包含的整數。

所有的被供應的整數是非負的且不大于100。

?

【輸出】

單獨的一行,包含那個可能得到的最大的和。

【輸入樣例】

5
13
11 8
12 7  26
6  14 15 8
12 7  13 24 11

【輸出樣例】

86
dp:
從下往上找F[1][1]=min{F[2][1]+A[1][1],F[2][2]+A[1][1]}
從F[N-1][1]到F[n-1][n-1]
一行行找到F[1][1];
#include<iostream>
using namespace std;
int a[1003][1002];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=i;j++)cin>>a[i][j];}for(int i=n-1;i>=1;i--){for(int j=1;j<=i;j++)a[i][j]+=max(a[i+1][j],a[i+1][j+1]);}cout<<a[1][1]<<endl;return 0;
} 

1259:【例9.3】求最長不下降序列


時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 6847 ??? 通過數: 2146?

【題目描述】

設有由n(1n200)n(1≤n≤200)個不相同的整數組成的數列,記為:b(1)b(2)b(n)b(1)、b(2)、……、b(n)且b(i)b(j)(ij)b(i)≠b(j)(i≠j),若存在i1<i2<i3<<iei1<i2<i3<…<ie?且有b(i1)<b(i2)<<b(ie)b(i1)<b(i2)<…<b(ie)則稱為長度為e的不下降序列。程序要求,當原數列出之后,求出最長的不下降序列。

例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。例中13,16,18,19,21,22,63就是一個長度為7的不下降序列,同時也有7 ,9,16,18,19,21,22,63組成的長度為8的不下降序列。

?

【輸入】

第一行為n,第二行為用空格隔開的n個整數。

【輸出】

第一行為輸出最大個數max(形式見樣例);

第二行為max個整數形成的不下降序列,答案可能不唯一,輸出一種就可以了,本題進行特殊評測。

【輸入樣例】

14
13 7 9 16 38 24 37 18 44 19 21 22 63 15

【輸出樣例】

max=8
7 9 16 18 19 21 22 63

dp:

F[n]為以a[n]為結尾的最長遞增序列長度

F[n]=max{F[i]+1&&a[i]<a[n]}

答案是F[i]的最大值(1<=i<=n)

#include<iostream>
using namespace std;
int a[205];
int F[205];
int main(){int n,maxx,maxxx=0;;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];maxx=0;for(int j=1;j<i;j++){if(a[j]<a[i]){if(F[j]>maxx)maxx=F[j];}}F[i]=maxx+1;if(F[i]>maxxx)maxxx=F[i];}cout<<maxxx<<endl;return 0;
} 

但是題目要求輸出序列,就要保存序列,就多開一維F,存以F[i]結尾的序列

#include<iostream>
using namespace std;
int a[205];
int F[205][205];
int main(){int n,maxx,maxxx=0,maxn;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];maxx=0;for(int j=1;j<i;j++){if(a[j]<=a[i]){if(F[j][0]>maxx){maxx=F[j][0];for(int w=1;w<=F[j][0];w++)F[i][w]=F[j][w];}}}F[i][0]=maxx+1;F[i][F[i][0]]=a[i];if(F[i][0]>maxxx){maxxx=F[i][0];maxn=i;}}cout<<"max="<<maxxx<<endl;for(int i=1;i<=maxxx;i++){if(i!=1) cout<<" ";cout<<F[maxn][i];}cout<<endl;return 0;
} 

1261:【例9.5】城市交通路網


時間限制: 1000 ms ??? ??? 內存限制: 65536 KB
提交數: 1680 ??? 通過數: 1240?

【題目描述】

下圖表示城市之間的交通路網,線段上的數字表示費用,單向通行由A->E。試用動態規劃的最優化原理求出A->E的最省費用。

如圖:求v1到v10的最短路徑長度及最短路徑。

【輸入】

第一行為城市的數量N;

后面是N*N的表示兩個城市間費用組成的矩陣。

【輸出】

A->E的最省費用。

【輸入樣例】

10
0  2  5  1  0  0  0  0  0  0
0  0  0  0 12 14  0  0  0  0
0  0  0  0  6 10  4  0  0  0
0  0  0  0 13 12 11  0  0  0
0  0  0  0  0  0  0  3  9  0
0  0  0  0  0  0  0  6  5  0
0  0  0  0  0  0  0  0 10  0
0  0  0  0  0  0  0  0  0  5
0  0  0  0  0  0  0  0  0  2
0  0  0  0  0  0  0  0  0  0

【輸出樣例】

minlong=19
1 3 5 8 10
dp:F[i]代表從起點到i號的最短距離
從前向后推:F[n]=min{f[i]+a[i][n]&&a[i][n]!=0}
然后b[n][]記錄到n的路徑
#include<iostream>
using namespace std;
int n;
int a[105][105];
int F[100];
int b[105][105];
int main(){cin>>n;for(int i=1;i<=n;i++)b[i][1]=1;int tn=1;for(int i=1;i<=n;i++){F[i]=999999;for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){if(a[1][i]!=0){F[i]=a[1][i];b[i][2]=i;}}for(int i=2;i<n;i++){for(int j=i+1;j<=n;j++){if(a[i][j]!=0){if(a[i][j]+F[i]<F[j]){for(int x=1;x<=n;x++){if(b[i][x]!=0)b[j][x]=b[i][x];else{b[j][x]=j;break;}}F[j]=a[i][j]+F[i];}}}}cout<<"minlong="<<F[n]<<endl;for(int i=1;i<=n;i++){if(b[n][i]==0) break;if(i!=1) cout<<" ";cout<<b[n][i];
}
cout<<endl;return 0;
} 

?

轉載于:https://www.cnblogs.com/yfr2zaz/p/10610712.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249309.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot項目間接口調用實現:RestTemplate

https://blog.csdn.net/zhanglf02/article/details/89842372

python入門學習的第三天

step 1 時間 Python有兩個模塊&#xff0c;time和calendar&#xff0c;它們可以用于處理時間和日期 首先 import time 導入時間模塊 然后 print time.time() 這個叫時間戳&#xff0c;它是從1970年1月1日午夜到現在時刻的秒數 print time.localtime(time.time()) print time.st…

JavaScript事件詳解

JavaScript與HTML之間的交互是通過事件來實現的。事件&#xff0c;就是文檔或瀏覽器窗口中發生的一些特定的交互瞬間。可以用偵聽器來預訂事件&#xff0c;以便事件發生的時候執行相應的代碼。 事件流 事件流描述了從頁面中接收事件的順序&#xff0c;包括事件冒泡和事件捕獲。…

JavaScript基礎01

JavaScript查漏補缺 JavaScript有幾種數據類型&#xff1f; 0. String(字符串) 1. Number(數值) 2. Boolean(布爾) 3. Null(空值) 4. Undefined(未定義) 5. Object(對象)前 5 種是基本類型 Null類型和Undefined類型的定義和區別&#xff1f; Null類型的值只有一個(null)&#…

.Net Core應用框架Util介紹(五)

上篇簡要介紹了Util在Angular Ts方面的封裝情況&#xff0c;本文介紹Angular封裝的另一個部分&#xff0c;即Html的封裝。 標準組件與業務組件 對于管理后臺這樣的表單系統&#xff0c;你通常會使用Angular Material或Ng-Zorro這樣的UI組件庫&#xff0c;它們提供了標準化的U…

SpringBoot中處理的轉發與重定向

https://blog.csdn.net/yubin1285570923/article/details/83796003

scrapy爬蟲系列之三--爬取圖片保存到本地

功能點&#xff1a;如何爬取圖片&#xff0c;并保存到本地 爬取網站&#xff1a;斗魚主播 完整代碼&#xff1a;https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代碼&#xff1a; douyu.py import scrapy import json from Douyu.items import DouyuItemclass DouyuSp…

glup server 報錯 Task function must be specified

解決方案 今天像往常一樣&#xff0c;編寫文章&#xff0c;并使用gulp bulid壓縮代碼&#xff0c;但是一運行&#xff1a;gulp build 就出現了這個錯誤&#xff1a;AssertionError: Task function must be specified。 gulp項目需要全局安裝gulp和項目內安裝gulp&#xff0c;…

mybatis Example 使用方法

一、mapper接口中的方法解析 mapper接口中的函數及方法 方法 功能說明 int countByExample(UserExample example) thorws SQLException 按條件計數 int deleteByPrimaryKey(Integer id) thorws SQLException 按主鍵刪除 int deleteByExample(UserExample example) thorws SQLE…

gulp + browsersync實現頁面自動刷新

寫習慣了vue&#xff0c;特別喜歡vue的自動刷新功能&#xff0c;于是琢磨在node中如何自動刷新&#xff0c;使用過nodemon&#xff0c; 但是感覺效果差點&#xff0c;看到網上有gulp livereload的方案和gulp browsersync的方案&#xff0c;但都是褒貶不一&#xff0c;先簡單記…

[JZOJ5836] Sequence

Problem 題目鏈接 Solution 吼題啊吼題&#xff01; 首先如何求本質不同的子序列個數就是 \(f[val[i]]1\sum\limits_{j1}^k f[j]\) 其中 \(f[i]\) 表示的是以 \(i\) 結尾的子序列個數 先把原數列的不同子序列個數求出來&#xff0c;然后觀察一下這個轉移&#xff0c;貪心的發現…

numpy和pandas的基礎索引切片

Numpy的索引切片 索引 In [72]: arr np.array([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]) In [73]: arr Out[73]: array([[[1, 1, 1],[2, 2, 2]],[[3, 3, 3],[4, 4, 4]]])In [74]: arr.nd…

mybatis的Example[Criteria]的使用

https://blog.csdn.net/u014756578/article/details/86490052

Thunar 右鍵菜單等自定義

Thunar 右鍵菜單等自定義 可以使用圖形界面或者直接編輯配置文件&#xff0c;二者是等價的。 圖形界面&#xff1a; 以給“zip&#xff0c;rar&#xff0c;7z”等文件添加“在此位置使用unar解壓縮”的右鍵菜單為例&#xff1a;&#xff08;unar可以很好地處理編碼問題&#xf…

JavaScript設計模式(二)之單例模式

一、單例模式的定義 單例就是保證一個類只有一個實例&#xff0c;實現的方法一般是先判斷實例存在與否&#xff0c;如果存在直接返回&#xff0c;如果不存在就創建后再返回&#xff0c;這就確保了一個類只有一個實例對象。在JavaScript里&#xff0c;單例作為一個命名空間的提…

python全棧開發_day10_函數的實參和形參

一&#xff1a;函數的實參和形參 實參是在調用函數時()出現的外界的實際的值 形參不能再函數外部直接使用 1&#xff09;實參的兩種形式 實參是調用函數時()中傳入的參數 1.位置實參 def a(a):print(a)a(1)#得到返回值:1 2.關鍵字實參 def a(a,b):print(a,b)a(b3,a5)#得到返回值…

JAVA的(PO,VO,TO,BO,DAO,POJO)解釋

JAVA的(PO,VO,TO,BO,DAO,POJO)解釋 O/R Mapping 是 Object Relational Mapping&#xff08;對象關系映射&#xff09;的縮寫。通俗點講&#xff0c;就是將對象與關系數據庫綁定&#xff0c;用對象來表示關系數據。在O/R Mapping的世界里&#xff0c;有兩個基本的也是重要的東東…

使用wsimport命令生成webService客戶端代碼實例

https://blog.csdn.net/qq_39459412/article/details/79079865

學習網站大匯集

一.綜合類學習網站&#xff08;中文&#xff09; 1.網易公開課&#xff1a;https://open.163.com/。上面有TED、可汗學院、國內外高校公開課的免費資源。站內內容完全免費&#xff0c;良心推薦。 2.網易云課堂&#xff1a;http://study.163.com/。網易旗下付費學習平臺&#…

ios怎樣在一個UIImageButton的里面加一些自己定義的箭頭

能夠採用例如以下方法&#xff0c;寫一個函數&#xff1a; -(UIImage*) getOneImageButtonWithArrow{//tmpView做附控件UIView *tmpView [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 38.0f, 32.0f)];tmpView.backgroundColor [UIColor clearColor];//bgImg作為背景…