SSL 1010 方格取數

2021-08-13 23:02:15 字數 938 閱讀 9844

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條這樣的...