#include<stdio.h> #include<stdlib.h> int a[100][100];//这个矩阵有几行几列 int dp[100][100]; //表示从矩阵左上角到每个格子的距离 //Min函数:选择出最小值 int Min(int a,int b){ if(a<b){ return a; }else{ return b; } } //第一行或第一列格子的计算 int getMin(int m,int n){ int min; dp[0][0]=a[0][0]; for(int i=1;i<m;i++){ dp[i][0]=a[i][0]+dp[i-1][0]; } for(int i=1;i<n;i++){ dp[0][i]=a[0][i]+dp[0][i-1]; } //其他格子的计算 for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ min=Min(dp[i-1][j],dp[i][j-1]); dp[i][j]=min+a[i][j]; } } return dp[m-1][n-1]; } int main(){ int m,n; scanf("%d%d",&m,&n);//输入矩阵的横列数 for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ scanf("%d",&a[i][j]);//输入矩阵的值 } } printf("%d\n",getMin(m,n)); return 0; }给代码加入输入提示语句,并加上输出路径
时间: 2023-12-16 07:06:36 浏览: 67
C语言学习知识通用算法归纳.pdf
可以在代码中加入如下的输入提示语句:
```c
printf("请输入矩阵的行数和列数:");
scanf("%d%d",&m,&n);
printf("请输入矩阵的值:\n");
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
```
同时,在程序结束时,可以输出最短路径的长度,并加入输出路径的代码:
```c
printf("最短路径的长度为:%d\n",getMin(m,n));
printf("路径为:");
int i=m-1,j=n-1;
while(i>0 || j>0){
printf("(%d,%d)->",i,j);
if(i==0){
j--;
}else if(j==0){
i--;
}else{
if(dp[i-1][j]<dp[i][j-1]){
i--;
}else{
j--;
}
}
}
printf("(0,0)\n");
```
这样,完整代码如下:
阅读全文