下沙小面的(2)
来源:互联网 发布:魔兽世界官网mac下载 编辑:程序博客网 时间:2024/05/17 07:28
/* 又加入一个水题,没有一点突破,简单题就是这样,转转又转回来了,本质上还是水题一个,没什么意思。但是我的代码确实写得没动脑筋,还是那个全排列的模板,想都没想直接套,然后就过了,以后写这样的水题,私下里还是要改进一下代码比较好 */
#include < iostream >#include < map >#include < cstdio >#define N 31#define inf 0x3f3f3f3fusing namespace std;bool v[N];map< int , int > m;map<int,int>::iterator it;int a[N][N],n,b[N],w[N],b1,s;int Min(int x , int y) {return x<y?x:y;}void check(){int i,temp;for(temp=0,i=1 ; i<b1 ; i++)temp+=a[w[i-1]][w[i]];s=Min(s , temp);}void dist(int k){int i;if(k>=b1){w[0]=0;check();return ;}for(i=1 ; i<b1 ; i++){if(!v[i]){v[i]=1;w[k]=b[i];dist(k+1);v[i]=0;}}}int main (){//freopen("t.txt","r",stdin);int i,j,k,t;while(~scanf("%d",&n),n){m.clear();for(i=0 ; i<n ; i++)for(j=0 ; j<n ; j++)scanf("%d",&a[i][j]);scanf("%d",&t);for(i=0 ; i<t ; i++)scanf("%d",&k),m[k]=1;b[0] = 0;memset(v,0,sizeof(v));for(b1=1,it=m.begin();it!=m.end();it++)if(it->second==1)b[b1++]=it->first;/*for(i=1 ; i<b1 ; i++) cout<<b[i]<<' ';cout<<endl;*/s=inf;dist(1);printf("%d\n",s);}return 0;}
- 下沙小面的(2)
- hdu 下沙小面的(2)(DFS)
- B - 下沙小面的(2) (DFS)
- HDU1572:下沙小面的(2)(DFS)
- HDU 1572 下沙小面的(2)
- DFS 下沙小面的(2)
- C - 下沙小面的(2)
- hdu1572 下沙小面的(2)
- 下沙小面的(2)
- 下沙小面的(2)
- 下沙小面的(2)
- 下沙小面的(2)
- HDU1572下沙小面的(2)
- 下沙小面的(2)
- 爆搜解hdu1572下沙小面的(2)
- C – 下沙小面的(2)
- HDU 1572 下沙小面的(2)
- hdu 1572 下沙小面的(2)
- c++面向对象设计
- 用php的GD库画一个简易股市走势图(折线图)
- 重新认识开源第三方库在平台软件开发中的作用
- 优秀程序员不得不知道的20个位运算技巧
- win7下安装ubuntu
- 下沙小面的(2)
- 用GD库画统计饼状图
- oracle创建表空间用户,导入导出dmp备份库
- 优秀程序员不得不知道的20个位运算技巧
- 二维数组作函数参数以及返回值
- 任意键复位MCU
- JAVA--第七周实验-- 继续上周封装对象的编程练习,完成矩阵的运算。
- sizeof(p)/sizeof((p)[0])
- 读写注册表