1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N = 105; int a[N][N], c[N], dp[N];//f[i]第i个点到终点的最小花费 int main(){ int n, t = 0; cin>>n; for(int i=0; i<n; i++) for(int j=0; j<n; j++) cin>>a[i][j]; for(int i=0; i<n-1; i++) dp[i] = N*N*N; dp[n-1] = 0,c[n-1] = 0; for(int i=n-2; i>=0; i--){//倒着向前找 for(int j=i+1; j<n; j++) if(a[i][j] && a[i][j] + dp[j] < dp[i]){ dp[i] = a[i][j] + dp[j]; c[i] = j;//从i到j的最小花费点 } } printf("minlong=%d\n%d", dp[0], 1); while(c[t]) { printf(" %d", c[t]+1); t = c[t]; } return 0; }
- 1
信息
- ID
- 739
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 29
- 已通过
- 13
- 上传者