NOJ——1568走走走走走啊走(超級入門DP)

來源:互聯網
上載者:User

標籤:

  • [1568] 走走走走走啊走
  • 時間限制: 1000 ms 記憶體限制: 65535 K
  • 問題描述
  • 菜菜賺了錢回來,想起要買很多桶回來,不同地方的桶品質是不同的,他在(1,1)點出發因為飛機票有點貴所以他只能向我們的所在地(n,m)處移動,也就是只能向右和下移動,

    我們有的桶可能吃膩了所以(i,j)點的值可取可不取;但是菜菜自己也會餓所以在某些城市會吃掉一部分,甚至先透支一部分,所以a(i, j)可以為負,

    為了犒勞我們他儘可能會多帶一點問他最多帶多少品質回來

  • 輸入
  • 輸入n,m (n,m <= 1000)
    再輸入n行m列值A(i,j) A(i,j)在 - 1000 ~ 1000 之間。而且A(i,j)可以取可以不取.只能往右或者往下走。
    問你,從左上方走到右下角,可以得到的最大值是多少。
  • 輸出
  • 輸出最大值
  • 範例輸入
  • 3 31 2 34 5 64 8 9
  • 範例輸出
  • 27
  • 提示
  • 1 -> 4 -> 5 -> 8 -> 9

原理跟數塔比較像,四種狀態:上面和左邊走過來(2) * 取或不取(2)。

代碼:

#include<iostream>#include<algorithm>#include<cstdlib>#include<sstream>#include<cstring>#include<cstdio>#include<string>#include<deque>#include<stack>#include<cmath>#include<queue>#include<set>#include<map>using namespace std;typedef long long LL;#define INF 0x3f3f3f3fint pos[1010][1010];int dp[1010][1010];int main(void){int n,m,temp,i,j;while (~scanf("%d%d",&n,&m)){memset(pos,0,sizeof(pos));memset(dp,0,sizeof(dp));for (i=0; i<n; i++){for (j=0; j<m; j++){scanf("%d",&pos[i][j]);}}dp[0][0]=pos[0][0];//這裡要用條件初始化for (i=0; i<n; i++){for (j=0; j<m; j++){dp[i][j]=max(dp[i-1][j],max(dp[i][j-1],max(pos[i][j]+dp[i-1][j],pos[i][j]+dp[i][j-1])));}}printf("%d\n",dp[n-1][m-1]);}return 0;}

  

NOJ——1568走走走走走啊走(超級入門DP)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.