1 条题解
-
0
dp
#include <bits/stdc++.h> using namespace std; const int N = 20; int f[1 << N], a[N][N], n; int popcount(int S) { int res = 0; do if (S & 1) res ++; while (S >>= 1); return res; } int main() { cin >> n; memset(f, 0x3f, sizeof f), f[0] = 0; for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++) cin >> a[i][j]; for (int i = 0; i < 1 << n; i ++) { int k = popcount(i); for (int j = 1; j <= n; j ++) if (i & 1 << (j - 1)) f[i] = min(f[i], f[i ^ 1 << (j - 1)] + a[k][j]); } cout << f[(1 << n) - 1] << '\n'; return 0; }
- 1
信息
- ID
- 135
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 119
- 已通过
- 46
- 上传者