小胖辦證
題目描述
xuzhenyi要辦個簽證。辦證處是一座M層的大樓,1< =M< =100。
每層樓都有N個辦公室,編號為1..N(1< =N< =500)。每個辦公室有一個簽證員。
簽證需要讓第M層的某個簽證員蓋章才有效。
每個簽證員都要滿足下面三個條件之一才會給xuzhenyi蓋章:
- 這個簽證員在1樓
- xuzhenyi的簽證已經給這個簽證員的正樓下(房間號相同)的簽證員蓋過章了。
- xuzhenyi的簽證已經給這個簽證員的相鄰房間(房間號相差1,樓層相同)的簽證員蓋過章了。
每個簽證員蓋章都要收取一定費用,這個費用不超過1000000000。
找出費用最小的蓋章路線,使簽證生效輸入資料
第 1 行兩個整數 M 和 N
接下來 M 行每行 N 個整數,第 i 行第 j 個數表示第 i 層的第 j 個簽證員收取的費用。輸出資料
按順序打出你經過的房間的編號,每行一個數。
如果有多條費用最小的路線,輸出任意一條。樣例輸入
3 4 10 10 1 10 2 2 2 10 1 10 10 10
樣例輸出
3 3 2 1 1
解析:動態規劃,移動方式,同一層移動和上下層房間號相同的移動
先計算,同一房間號的上下層之間的花費,然後,在同一層向右走更新dp,再向左走更新dp。
#include<iostream> #include<math.h> using namespace std; int cost[105][505]; long dp[105][505]; struct Node{ int x; int y; }; Node path[105][505];//記錄路徑 int main(){ int m,n; cin>>m>>n; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) cin>>cost[i][j]; for(int i=1; i<=m; i++) for(int j=1; j<=n; j++) dp[i][j] = 1e9 + 1; for(int j=1; j<=n; j++){ dp[1][j]=cost[1][j]; //第一層 Node temp = {0,0}; path[1][j] = temp; } for(int i=2; i<=m; i++){ //從上到下 for(int j=1; j<=n; j++){ dp[i][j] = dp[i-1][j] + cost[i][j]; Node temp = {i-1, j}; path[i][j] = temp; } //從左到右 for(int j=2; j<=n; j++){ if(dp[i][j-1]+cost[i][j]<dp[i][j]){ dp[i][j]=dp[i][j-1]+cost[i][j]; Node temp = {i, j-1}; path[i][j] = temp; } } //從右到左 for(int j=n-1; j>0; j--){ if(dp[i][j+1]+cost[i][j]<dp[i][j]){ dp[i][j]=dp[i][j+1]+cost[i][j]; Node temp = {i, j+1}; path[i][j] = temp; } } } //找到花費最小的終點 Node end; end.x=m; long cost = 1e9 + 1; for(int j=1; j<=n; j++) if(dp[m][j]<cost){ cost = dp[m][j]; end.y = j; } int ans[1000]; int k=0; Node cur = end; //回溯路徑 while(1){ if(cur.x==0) break; ans[k++]=cur.y; cur=path[cur.x][cur.y]; } for(int i=k-1; i>=0; i--) cout<<ans[i]<<endl; return 0; }
相關文章
- 辦理ICP許可證
- 【生活】港澳通行證辦理(上海)
- 小胖親測,分享3個實用建議,幫助你提升工作效率
- 思否有約丨上海小胖:畢業 3500,3 年攢夠 50 萬
- ICP證辦理流程是什麼?
- 對講機SRRC認證辦理
- 北京居住證辦理流程親身整理
- qq郵箱收不到epic驗證郵件怎麼辦 epic郵箱驗證沒反應怎麼辦
- 加拿大學位證溫莎大學畢業證文憑[Q/微707091118]辦理加拿大Windsor畢業證成績單,官方學位證/使館認證/學歷認證/留信認證/為您辦理加拿大學位證文憑,加拿大學位證畢業證
- 加拿大學位證約克大學畢業證文憑[Q/微707091118]辦理加拿大York畢業證成績單,官方學位證/使館認證/學歷認證/留信認證/為您辦理加拿大學位證文憑,加拿大學位證畢業證
- 申請DigiCert SSL證書出現DNS驗證失敗怎麼辦DNS
- PbootCMS驗證碼不顯示怎麼辦boot
- 遠端辦公如何保證資料安全?
- 辦理C-TICK認證需要多少錢
- 畢業證成績單辦理Q微786161891辦UTS畢業證成績單辦理悉尼科技大學畢業證成績單辦理|offer錄取通知書,收費單,修改成績單GPA
- 畢業證成績單辦理Q微786161891辦Deakin畢業證成績單辦理迪肯大學畢業證成績單辦理|offer錄取通知書,收費單,修改成績單GPA
- 加拿大學位證卡爾頓大學畢業證文憑[Q/微707091118]辦理加拿大Carleton畢業證成績單使館認證/學歷認證/留信認證/為您辦理加拿大學位證文憑,加拿大學位證畢業證
- 加拿大學位證瑞爾森大學畢業證文憑[Q/微707091118]辦理加拿大Ryerson畢業證成績單,官方學位證/使館認證/學歷認證/留信認證/為您辦理加拿大學位證文憑,加拿大學位證畢業證
- 加拿大學位證渥太華大學畢業證文憑[Q/微707091118]辦理加拿大Ottawa畢業證成績單,官方學位證/使館認證/學歷認證/留信認證/為您辦理加拿大學位證文憑,加拿大學位證畢業證
- 加拿大大學畢業證證明Q微786161891辦理|官方正版辦McGill畢業證文憑辦McGill成績單|offer錄取通知書,收費單,修改成績單GPA
- 畢業證成績單辦理Q微786161891辦Monash畢業證莫納什大學畢業證成績單辦理|offer錄取通知書,收費單,修改成績單GPA
- 申請SSL證書只有域名一種辦法嗎 SSL證書申請指南
- SSL證書會不會過期?域名SSL證書過期了怎麼辦?
- 遇到程式碼簽名證書出錯怎麼辦
- 應當辦理施工許可證的工程有哪些
- 服務式辦公室出租,保證創業效率創業
- 畢業證成績單辦理Q微786161891辦UNSW畢業證成績單辦理文憑新南威爾士大學畢業證|offer錄取通知書,收費單,修改成績單GPA
- 薇信:diplomasmaker 專業辦理海外大學畢業證〓成績單〓學歷認證ASM
- win10系統cad2009一直正在驗證許可證怎麼辦Win10
- win10cad2008正在驗證許可證卡著打不開解決辦法Win10
- CATIA許可證時間錯誤的解決辦法
- php onethink驗證碼不顯示的解決辦法PHP
- 購買國立大學大學畢業證/定做國立大學畢業證/Q/微239093618辦國立大學畢業證/做國立大學成績單/代辦國立大學學生卡、在讀證明、諮詢學歷認證教育部認證
- 網站證書錯誤打不開網頁怎麼辦網站網頁
- 申請SSL證書遇到這些問題該怎麼辦
- 手機上所部署的DigiCert證書過期怎麼辦
- 驗證ISO映象是否源於官方網站的辦法網站
- 紡織品辦理一份REACH認證週期多久