description
設有n*n的方格圖(n<=10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示(見樣例):
某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數(取走後的方格中將變為數字0)。
此人從a點到b 點共走兩次,試找出2條這樣的路徑,使得取得的數之和為最大。
這題可以用動態規劃,用sum[i][j][h][k]表示當第一條路徑走到(i,j)和第二條路徑走到(h,k)時的最優解,用a[i,j]和a[h,k]表示第(i,j)和第(h,k)位置的數可得動態轉移方程:
當(i,j)=(h,k)時sum[i][j][h][k]=max(sum[i-1][j][h-1][k],sum[i][j-1][h][k-1],sum[i][j-1][h-1][k],sum[i-1][j][h][k-1])+a[i,j];
當(i,j)<>(h,k)時sum[i][j][h][k]=max(sum[i-1][j][h-1][k],sum[i][j-1][h][k-1],sum[i][j-1][h-1][k],sum[i-1][j][h][k-1])+a[i,j]+a[h,k].
#includeint a[101][101],sum[11][11][11][11],x,y,n,b,p,q;
int max(int x,int y)
int main()
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
for (int h=1;h<=n;h++)
for (int k=1;k<=n;k++)
printf("%d",sum[n][n][n][n]);
}
SSL 1010 方格取數
2000年分割槽聯賽提高組之四 方格取數 time limit 50000ms memory limit 65536k total submit 198 accepted 112 description 設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下...
1277 方格取數
設有n n的方格圖,我們在其中的某些方格中填入正整數,而其它的方格中則放入數字0。如下圖所示 某人從圖中的左上角a出發,可以向下行走,也可以向右行走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b點共走了兩次,試找出兩條這樣的路徑,使得取得的數字...
DP ssl 1010 方格取數(多執行緒DP)
設有n n的方格圖 n 10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示 見樣例 某人從圖的左上角的a 點出發,可以向下行走,也可以向右走,直到到達右下角的b點。在走過的路上,他可以取走方格中的數 取走後的方格中將變為數字0 此人從a點到b 點共走兩次,試找出2條這樣的...