楼主你看咱俩名字相似(逃
by BeyondHeaven @ 2019-11-14 18:05:26
@[HN_0917](/user/77609) 我们名字相似但是实力我渣太多了
by wrpwrp @ 2019-11-14 18:08:47
@[HN_026](/user/139012) 窝的也许可以为您参考
```cpp
#include <bits/stdc++.h>
#define N 1100005
using namespace std;
const int INF = INT_MAX >> 1;
int n, f[21][N], mp[21][21], maxf;
int dfs(int p, int s) {
if(p == n - 1) return s ? INF : 0;
if(f[p][s]) return f[p][s];
f[p][s] = INF;
for(int i = 0;i < n;i++) {
if(i == p || !(s & (1 << i))) continue;
int nv = mp[p][i] + dfs(i, s & ~(1 << i));
if(nv < f[p][s]) f[p][s] = nv;
}
return f[p][s];
}
int main() {
scanf("%d", &n);
maxf = (1 << n) - 1;
for(int i = 0;i < n;i++)
for(int j = 0;j < n;j++)
scanf("%d", mp[i] + j);
printf("%d", dfs(0, maxf ^ 1));
return 0;
}
```
by saxiy @ 2019-11-14 18:39:34
@[HN_026](/user/139012) 应该是判达的问题,改成
```cpp
if(now == n) return S ? ifff : 0;
```
就好了
by saxiy @ 2019-11-14 18:47:32
如果是
```cpp
if(S==0)
{
if(now==n)
return 0;
else
return 100000000;
}
```
可能不必要的计算就多了
by saxiy @ 2019-11-14 18:48:24
毕竟终点必须是n-1。
by saxiy @ 2019-11-14 18:48:56
@[saxiy](/user/133236) O(∩_∩)O谢谢问题已解决!!
by wrpwrp @ 2019-11-15 08:12:09