洛谷P1006 传纸条(多维DP)
小淵和小軒是好朋友也是同班同學(xué),他們在一起總有談不完的話題。一次素質(zhì)拓展活動中,班上同學(xué)安排做成一個mm行nn列的矩陣,而小淵和小軒被安排在矩陣對角線的兩端,因此,他們就無法直接交談了。幸運(yùn)的是,他們可以通過傳紙條來進(jìn)行交流。紙條要經(jīng)由許多同學(xué)傳到對方手里,小淵坐在矩陣的左上角,坐標(biāo)(1,1(1,1),小軒坐在矩陣的右下角,坐標(biāo)(m,n)(m,n)。從小淵傳到小軒的紙條只可以向下或者向右傳遞,從小軒傳給小淵的紙條只可以向上或者向左傳遞。
在活動進(jìn)行中,小淵希望給小軒傳遞一張紙條,同時希望小軒給他回復(fù)。班里每個同學(xué)都可以幫他們傳遞,但只會幫他們一次,也就是說如果此人在小淵遞給小軒紙條的時候幫忙,那么在小軒遞給小淵的時候就不會再幫忙。反之亦然。
還有一件事情需要注意,全班每個同學(xué)愿意幫忙的好感度有高有低(注意:小淵和小軒的好心程度沒有定義,輸入時用00表示),可以用一個0-1000?100的自然數(shù)來表示,數(shù)越大表示越好心。小淵和小軒希望盡可能找好心程度高的同學(xué)來幫忙傳紙條,即找到來回兩條傳遞路徑,使得這22條路徑上同學(xué)的好心程度之和最大?,F(xiàn)在,請你幫助小淵和小軒找到這樣的22條路徑。
輸入輸出格式
輸入格式:
?
輸入文件,第一行有22個用空格隔開的整數(shù)mm和nn,表示班里有mm行nn列。
接下來的mm行是一個m \times nm×n的矩陣,矩陣中第ii行jj列的整數(shù)表示坐在第ii行jj列的學(xué)生的好心程度。每行的nn個整數(shù)之間用空格隔開。
?
輸出格式:
?
輸出文件共一行,包含一個整數(shù),表示來回22條路上參與傳遞紙條的學(xué)生的好心程度之和的最大值。
?
輸入輸出樣例
輸入樣例#1:?復(fù)制
3 3 0 3 9 2 8 5 5 7 0輸出樣例#1:?復(fù)制
34說明
【限制】
30%的數(shù)據(jù)滿足:1 <=m,n<=10
100%的數(shù)據(jù)滿足:1<=m,n<=100
Mycode:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; int n; int m; int a[55][55]; void read() {scanf("%d%d",&n,&m);for(int i=0;i<n;i++)for(int j=0;j<m;j++)scanf("%d",&a[i][j]); } int dp[55][55][55][55]; int dx[2]={-1,0}; int dy[2]={0,-1}; bool ok(int i,int j,int d,int k) {if(i==0&&j==0&&d==0&&k==0)return true;if(i<0||i>=n||j<0||j>=m||d<0||d>=n||k<0||k>=m)return false;if(dp[i][j][d][k]==-1)return false;if(i==d&&j==k)return false;return true; } int main() { #ifndef ONLINE_JUDGEfreopen("in.txt","r",stdin); #endifread();memset(dp,-1,sizeof(dp));dp[0][0][0][0]=0;int tmp;int prei,prej,pred,prek;int ans=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){for(int d=0;d<n;d++){for(int k=0;k<m;k++){if(d==i&&k==j&&!(i==n-1&&j==m-1))continue;tmp=0;for(int k1=0;k1<2;k1++){for(int k2=0;k2<2;k2++){prei=i+dx[k1];prej=j+dy[k1];pred=d+dx[k2];prek=k+dy[k2];if(!ok(prei,prej,pred,prek))continue;tmp=max(tmp,dp[prei][prej][pred][prek]+a[i][j]+a[d][k]);}}dp[i][j][d][k]=tmp;}}}}int n1,m1,n2,m2;ans=dp[n-1][m-1][n-1][m-1];cout<<ans<<endl;return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/linruier/p/10596577.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的洛谷P1006 传纸条(多维DP)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬取及分析天猫商城冈本评论(二)数据处理
- 下一篇: 7-1查找整数