1106 最優對稱路徑(最短路 記憶化搜尋)

2021-08-04 12:10:03 字數 1199 閱讀 5742

submit page

summary

time limit: 1 sec

memory limit: 128 mb

submitted: 486

solved: 135

給乙個n行n列的網格,每個格仔裡有乙個1到9的數字。你需要從左上角走到右下角,其中每一步只能往上、下、左、右四個方向之一走到相鄰格仔,不能斜著走,也不能走出網格,但可以重複經過乙個格仔。為了美觀,你經過的路徑還必須關於「左下-右上」這條對角線對稱。下圖是乙個6x6網格上的對稱路徑。

你的任務是統計所有合法路徑中,數字之和最小的路徑有多少條。

輸入最多包含25組測試資料。每組資料第一行為乙個整數n(2<=n<=200)。以下n行每行包含n個1到9的數字,表示輸入網格。輸入結束標誌為n=0。

對於每組資料,輸出合法路徑中,數字之和最小的路徑條數除以1,000,000,009的餘數。

2

1 11 1

31 1 1

1 1 1

2 1 1

0

2

//可以重複走同乙個格仔,最短路+記憶化搜尋

//當wa時有時隨便造個資料也是好的

#include#include#include#includeusing namespace std;

const int m=1000000009;

int n,a[201][201],dis[201][201],d[201][201],vis[201][201],mi;

int dir[4][2]= ;

void spfa()}}

}}int dfs(int x1,int y1)

return d[x1][y1];

}int main()

spfa();//求出單源點最短路

mi=1e9;

for(int i=1; i<=n; ++i)

mi=min(mi,dis[i][n+1-i]);

memset(d,-1,sizeof(d));

for(int i=1; i<=n; ++i)

if(dis[i][n+1-i]==mi) d[i][n+1-i]=1;

else d[i][n+1-i]=0;

printf("%d\n",dfs(1,1));

}return 0;

}

最優對稱路徑

湖南省第七屆大學生計算機程式設計競賽 the seventh hunan collegiate programming contest 題目g最優對稱路徑 給乙個n行n列的網格,每個格仔裡有乙個1到9的數字。你需要從左上角走到右下角,其中每一步只能往上 下 左 右四個方向之一走到相鄰格仔,不能斜著走...

最優對稱路徑

給乙個n行n列的網格,每個格仔裡有乙個1到9的數字。你需要從左上角走到右下角,其中每一步只能往上 下 左 右四個方向之一走到相鄰格仔,不能斜著走,也不能走出網格,但可以重複經過乙個格仔。為了美觀,你經過的路徑還必須關於 左下 右上 這條對角線對稱。你的任務是統計所有合法路徑中,數字之和最小的路徑有多...

Codeup最短路徑 最短路徑

n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離。第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路,接下來m行兩個整數,表示相連的兩個城市的編號。n 1行,表示0號城市到其他城市的最短路,如果無法到達,輸出...