博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索
阅读量:6981 次
发布时间:2019-06-27

本文共 1440 字,大约阅读时间需要 4 分钟。

UVa 167

题意:八行八列的棋盘每行每列都要有一个皇后,每个对角线上最多放一个皇后,让你放八个,使摆放位置上的数字加起来最大。

参考:

1 #include 
2 #include
3 #include
4 using namespace std; 5 int pic[9][9]; 6 int ans; 7 int v[3][20]; 8 void dfs(int cur,int num){ 9 if(cur==8){
//出现一组解,看能否更新10 ans=max(ans,num);11 return ;12 }13 for(int i=0;i<8;i++){14 if(!v[0][i]&&!v[1][cur+i]&&!v[2][cur-i+8]){
//v[0] 代表行 v[1]代表副对角线 v[2]代表主对角线15 v[0][i]=1;v[1][cur+i]=1;v[2][cur-i+8]=1;//选这个点,标记16 dfs(cur+1,num+pic[cur][i]);//往下搜索17 v[0][i]=0;v[1][cur+i]=0;v[2][cur-i+8]=0;//复原18 }19 }20 }21 int main(){2223 int n;24 cin>>n;25 while(n--){26 ans=0;27 memset(v,0,sizeof(v));28 for(int i=0;i<8;i++)29 for(int j=0;j<8;j++)30 cin>>pic[i][j];31 dfs(0,0);32 cout<
<
<

 

题意:给你点和边的数量,再给你边的连接关系,求最长路径。点可以重复访问,边不行。

参考:

1 #include
2 #include
3 #include
4 #define N 26 5 using namespace std; 6 int n,m,ans; 7 int edg[N][N],vis[N][N]; 8 9 void search(int cur,int len){10 ans=max(ans,len);11 for(int i=0;i
>a>>b;27 edg[a][b]=edg[b][a]=1;//连边28 }29 ans=0;30 for(int i=0;i

 

转载于:https://www.cnblogs.com/noobimp/p/10301477.html

你可能感兴趣的文章
自己的php函数库
查看>>
HDU Problem 1599 find the mincost route 【Floyd求最小环】
查看>>
HDU2017多校联合 contest 1
查看>>
基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理(转载自:http://www.cnblogs.com/wuhuacong/p/4175266.html)...
查看>>
range
查看>>
[Noi2002]Savage 题解
查看>>
特征选择, 经典三刀(转)
查看>>
【Python3爬虫】自动查询天气并实现语音播报
查看>>
新的公司
查看>>
【JavaScript】02.基础语法学习
查看>>
自行学习XAML控件后的简单想法(作业一)
查看>>
python3 集合中的常用方法
查看>>
ECSHOP生成缩略图模糊
查看>>
LayaAir疑难杂症之四:laya引擎自动断点到bundle.js文件中且无报错,但程序不再执行...
查看>>
元组操作
查看>>
Delphi判断字符串是否是数字、字母、大小写字母
查看>>
POJ NOI0105-45 金币
查看>>
Project Euler Problem 15 Lattice paths
查看>>
组合模式
查看>>
Python之路番外(第三篇):Pycharm的使用秘籍
查看>>