题目:最低通行费
思路:
滚动数组优化。
转移方程 f[j]=min(f[j],f[j-1])+a[i][j]
注意滚动数组引起的初始化问题。
代码:
#include<bits/stdc++.h>
using namespace std;
#define maxn 100
#define inf (1<<30)
int n;
int f[maxn+5]= {0};
int main() {
scanf("%d",&n);
for(int i=0; i<=n; i++) f[i]=inf;
f[1]=0;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
int x;
scanf("%d",&x);
f[j]=min(f[j],f[j-1])+x;
}
}
printf("%d",f[n]);
return 0;
}
本文通过使用滚动数组优化的方法解决了最低通行费问题。通过定义转移方程 f[j]=min(f[j],f[j-1])+a[i][j] 来求解最小费用路径,并详细展示了 C++ 实现代码。
900

被折叠的 条评论
为什么被折叠?



