看大佬的代码都是用
i ^ (1 - j)
但是我自己不太熟悉就还是写
i - (1 - j)
hhh
下面是代码
# include <bits/stdc++.h>
using namespace std;
const int N = 20, M = 1 << N;
int d[N][N], f[M][N], n, m;
int main()
{
cin >> n, m = 1 << n;
for(int i = 0; i < n; i ++)
for(int j = 0; j < n; j ++)
cin >> d[i][j];
for(int i = 0; i < m; i ++)
for(int j = 0; j < n; j ++)
f[i][j] = 1e9;
f[1][0] = 0;
for(int i = 0; i < m; i ++)
for(int j = 0; j < n; j ++)
if((i >> j) & 1)
{
int old = i - (1 << j);
for(int k = 0; k < n; k ++)
if((old >> k) & 1)
f[i][j] = min(f[i][j], f[old][k] + d[k][j]);
}
cout << f[m - 1][n - 1];
}