2 条题解
-
0
#include<bits/stdc++.h> using namespace std; int n, a[20][20], v[20], ans; void dfs(int x, int k, int s) { if(s>ans) return ; if(k==n) { if(s+a[x][1]<ans) ans=s+a[x][1]; return ; } for(int i=2;i<=n;i++) if(!v[i]) { v[i]=1; if(s+a[x][i]<ans)dfs(i,k+1,s+a[x][i]); v[i]=0; } } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); memset(v,0,sizeof(v)); v[1]=1; ans=9999999999; dfs(1,1,0); printf("%d\n",ans); return 0; } -
0
#include<bits/stdc++.h> using namespace std; int n,a[20][20],v[20],ans; void dfs(int x,int k,int s) { if(s>ans) return ; if(k==n) { if(s+a[x][1]<ans) ans=s+a[x][1]; return ; } for(int i=2;i<=n;i++) if(!v[i]) { v[i]=1; if(s+a[x][i]<ans)dfs(i,k+1,s+a[x][i]); v[i]=0; } } int main() { scanf("%d",&n); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]); memset(v,0,sizeof(v)); v[1]=1; ans=9999999999; dfs(1,1,0); printf("%d\n",ans); return 0; }
- 1
信息
- ID
- 82
- 时间
- 3000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 180
- 已通过
- 59
- 上传者