我想從起點(0,0)爲這個陣列它等於8的某一點(M,N)計算中給出二維陣列最小的成本總和
#include<iostream>
#include<limits.h>
using namespace std;
#define R 3
#define C 3
int Min(int x,int y,int z){
if(x<y){
return (x<z)?x:z;
}
else
return (y<z)?y:z;
}
int mincost(int cost[R][C],int m,int n){
int i,j;
int t[R][C];
t[0][0]=cost[0][0];
for(i=1;i<=m;i++)
t[i][0]=t[i-1][0]+cost[i][0];
for(j=1;j<=n;j++)
t[0][j]=t[0][j-1]+cost[0][j];
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
t[i][j]=Min(t[i-1][j-1],t[i-1][j],t[i][j-1]+cost[i][j]);
}
}
return t[m][n];
}
int main(){
int cost[R][C]={{1,2,3},
{4,8,2},
{1,5,3}};
cout<<mincost(cost,2,2)<<endl;
return 0;
}
最小總和,但輸出給我看1,爲什麼?這段代碼有什麼問題? 算法在詞語
鑑於成本矩陣成本[] []和一個位置(m,n)的成本[] [],編寫返回最小成本路徑的成本達到(M的函數,正)從(0,0)開始。矩陣的每個單元代表穿過該單元的成本。達到的路徑的總成本(m,n)是該路徑上的所有成本(包括源和目標)的總和。 (i,j),(i,j + 1)和(i + 1,j + 1)中的單元格, j + 1)可以遍歷。你可以假設所有成本都是正整數。
你能用言語形容你的算法嗎?這將適用於您的代碼中的註釋塊。 –
我想不出有什麼辦法來解釋結果是8,除了找到最大元素:( –
你添加的描述不是你的*算法*的描述,而是*問題陳述的描述*。 –