题目名称 1107. 售货员的难题
输入输出 salesman.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatar王者自由 于2012-10-06加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:137, 提交:526, 通过率:26.05%
Gravatar@@@ 100 0.000 s 0.00 MiB C++
Gravatar-1 100 0.000 s 0.00 MiB C++
GravatarHtBest 100 0.000 s 0.00 MiB C++
GravatarHtBest 100 0.000 s 0.00 MiB C++
Gravatar521 100 0.003 s 0.00 MiB C++
GravatarAAAAAAAAAA 100 0.003 s 0.00 MiB C++
GravatarHzoi_Ivan 100 0.003 s 3.52 MiB C++
GravatarHtBest 100 0.003 s 8.03 MiB C++
GravatarWildRage 100 0.010 s 1.01 MiB C++
GravatarYoungsc 100 0.011 s 5.46 MiB C++
关于 售货员的难题 的近10条评论(全部评论)
What????
Gravatarfsdh
2020-09-29 00:12 16楼
GravatarChenyao2333
2018-02-09 17:24 15楼
我怎么感觉我的模拟退火还不如纯随机化,,,
Gravatarhyghb
2018-02-05 17:24 14楼
我明白怎么做了
无视这个
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=20;
int f[N][1<<N],g[N][N],n;
int main()
{
// freopen("salesman.in","r",stdin);
// freopen("salesman.out","w",stdout);
memset(f,0x3f,sizeof(f));
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&g[i][j]);
for(int i=1;i<=n;i++)
f[i][0]=g[1][i];
for(int S=0;S<=(1<<n)-1;S++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(S&(1<<(j-1))&&g[i][j])
f[i][S]=min(f[i][S],f[j][S&(~(1<<(j-1)))]+g[j][i]);
printf("%d",f[1][(1<<n)-1]);
}
Gravatarpb0207
2017-03-19 15:42 13楼
回复 @pb0207 :
写错了同学,应该是g[j][i]不是g[i][j]
Gravatar荡漾
2017-03-19 15:42 12楼
回复 @荡漾 :
那么请问怎么错的呢 大神
大神我发现你的blog了好开心啊
prostkhala.github.io
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ORZ ORZ ORZ ORZ ORZ
我找到问题了
还是没有理解状态啊
g[i][j]
Gravatarpb0207
2017-03-19 15:42 11楼
1<n<=15
Gravatarrewine
2017-02-22 14:57 10楼
200万次随机化才过。。。
退役倒计时。。。
GravatarZwoi_只会打表抄代码的蒟蒻
2016-11-14 16:02 9楼
随机化多交几次就过了
Gravatardeadpool66
2016-10-23 19:18 8楼
启发式算法,AC
GravatarOI永别
2016-08-09 15:48 7楼

1107. 售货员的难题

★★   输入文件:salesman.in   输出文件:salesman.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】


某乡有n个村庄(1s(0A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。


【输入格式】

村庄数n和各村之间的路程(均是整数)。

【输出格式】

最短的路程。

【样例输入】

3
0 2 1
1 0 2
2 1 0

【样例输出】

3

【提示】

3     {村庄数} 

0 2 1     {村庄1到各村的路程}

1 0 2    {村庄2到各村的路程}

2 1 0    {村庄3到各村的路程}

n<=18,状压dp的同学随意切掉……