BIT2014級軟體學院程式設計 20 穿越矩陣

2021-07-10 06:03:03 字數 1384 閱讀 1569

20 穿越矩陣

現在有乙個 m * n 的整數矩陣,每一格上有乙個數字。請你編寫乙個程式計算出一條從左到右穿過矩陣的路徑,並使此路徑的費用最小。路徑的花費是指這條路徑所穿越的所有單元格中的數字之和。

路徑從矩陣的左側的第一列的任意單元格開始,逐步穿過矩陣到達最右側的一列的任意單元格。每一步是指從某單元格進入它右側一列的相鄰單元格(如下圖,可以是橫向或斜向)。矩陣的第一行和最後一行實際是相鄰的,你可以想象矩陣是包裹在乙個橫放的圓柱體外面。

穿越兩個略有不同的 5 * 6 的矩陣的路徑如下圖所示,這兩個矩陣只有最後一行的數字不同。右側的路徑顯示了第一行和最後一行相鄰的效果。

輸入包括一系列矩陣描述。每個矩陣描述的第一行是 m 和 n,即矩陣的行數和列數;之後的 m 行,每行包括 n 個以空格分開的整數,則是當前矩陣的值,注意矩陣的值未必是正數。

矩陣的行數 m 和列數 n 的範圍是:1 <= m <= 10、 1 <= n <= 100;所有路徑的費用值都可以用 30bit 的整數表示。

針對每乙個矩陣,找出費用最小的路徑,並將其輸出。每個矩陣的輸出包括兩行,第一行是路徑本身,即輸出每一步所在的行,第二行則是該路徑的費用。

如果對於同乙個矩陣有多條不同的費用最小路徑,則輸出左端行號較小的一條。

5 63 4 1 2 8 6

6 1 8 2 7 4

5 9 3 9 9 5

8 4 1 3 2 6

3 7 2 8 6 4

5 63 4 1 2 8 6

6 1 8 2 7 4

5 9 3 9 9 5

8 4 1 3 2 6

3 7 2 1 2 3

1 2 3 4 4 5

161 2 1 5 4 5

11從後往前動態規劃。然後開乙個陣列記錄路徑就好。

#include#include#define inf 0x7fffffff

int map[200][200];

int ans[200][200];

int path[200][200];

int m, n;

int check(int x, int y)

if (ans[x + 1][x1[i]] < k1)

}return k;

}int main()

} for (i = n ;i > 0;i--)

}debug to be continue

//find the min

for (j = 1;j <= m;j++)

}flag = ans_j;

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

printf("\n");

printf("%d\n", ans[1][ans_j]);

} }

BIT2014級軟體學院程式設計 10 的統計

眾所周知,琪露諾 cirno 是幻想郷 中首屈一指的天才,可以說 就是她的代名詞。然而如今,她遇到了乙個和 有關的難題。你能幫助她麼?題目是這樣的,給出兩個數 a 和 b 0 a b 10 10000 求 a 到 b 之間 包括a和b 的數字中,有多少個數字是包含9的 例如 19,910 等都是包含...

BIT2014級軟體學院程式設計 12 程式設計珠璣

你有一條項鍊,它由 n 個隨機排列的紅 白和藍色的珠子組成 3 n 350 下面的例子展示了兩條 n 29 時的項鍊 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r b b b b b b r b r r b r b r...

寫給我的2014級學生

時間過得很快,你們的寒假來到了,你們已經完整地度過了大學的第乙個學期,恭喜。談談我和大家的交集 程式設計。回想我們的開端 給你們演示乙個 hello world 也能激起大家的驚嘆,到你們乙個個都能做出來個人所得稅計算器 大獎賽計分器 電子詞典,部落格中的積累 oj上的狂刷,充實了整個的學期。呃,老...