1083 矩陣取數問題
基準時間限制:1 秒 空間限制:131072 kb 分值: 5
難度:1級演算法題
乙個n*n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。
例如:3 * 3的方格。
1 3 3
2 1 3
2 2 1
能夠獲得的最大價值為:11。
input
第1行:n,n為矩陣的大小。(2 <= n <= 500)output第2 - n + 1行:每行n個數,中間用空格隔開,對應格仔中獎勵的價值。(1 <= n[i] <= 10000)
輸出能夠獲得的最大價值。input示例
3output示例1 3 3
2 1 3
2 2 1
11
理解:
簡單的dp思想
從左上角走到右下角,每次考慮右邊和下邊的數,取較大的值,用二維陣列儲存下每一步走過後的值。
放**:(先放乙個wa的...)
#include #include #include #include #include #include using namespace std;
int a[550][550],dp[550][550];
int main()
printf("%d\n",dp[n][n]);
}return 0;
}
其實第二個**還有另一種改法
把陣列開小一點 即 550 改為 510 也能ac
(雖然還是有越界 但是不會wa 有能大佬解釋下嗎? 感謝(>^ω^<) )
這也是ac**:
#include #include #include #include #include #include using namespace std;
int a[510][510],dp[510][510];
int main()
{ int n,i,j;
while (~scanf("%d",&n))
{memset(dp,0,sizeof(dp));
// memset(a,0,sizeof a);
for (i=0; i
51Nod 1083 矩陣取數問題
乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價值為 11。input 第1行 n,n為矩陣的大小。2 n 500 第2 n 1行 每行n個數,中間用空...
51nod 1083 矩陣取數問題
1083 矩陣取數問題 基準時間限制 1 秒 空間限制 131072 kb 分值 5難度 1級演算法題 乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價...
51nod 1083 矩陣取數問題
基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 乙個n n矩陣中有不同的正整數,經過這個格仔,就能獲得相應價值的獎勵,從左上走到右下,只能向下向右走,求能夠獲得的最大價值。例如 3 3的方格。1 3 3 2 1 3 2 2 1 能夠獲得的最大價值為 11。input...