UVa 167

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

参考:https://blog.csdn.net/xiaoxiede_wo/article/details/79973171

 #include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;
int pic[][];
int ans;
int v[][];
void dfs(int cur,int num){
if(cur==){//出现一组解,看能否更新
ans=max(ans,num);
return ;
}
for(int i=;i<;i++){
if(!v[][i]&&!v[][cur+i]&&!v[][cur-i+]){//v[0] 代表行 v[1]代表副对角线 v[2]代表主对角线
v[][i]=;v[][cur+i]=;v[][cur-i+]=;//选这个点,标记
dfs(cur+,num+pic[cur][i]);//往下搜索
v[][i]=;v[][cur+i]=;v[][cur-i+]=;//复原
}
}
}
int main(){
int n;
cin>>n;
while(n--){
ans=;
memset(v,,sizeof(v));
for(int i=;i<;i++)
for(int j=;j<;j++)
cin>>pic[i][j];
dfs(,);
cout<<setw()<<ans<<endl;//输出有个小坑
}
}

POJ2258

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

参考:https://blog.csdn.net/miranda_ymz/article/details/79274577

 #include<iostream>
#include<cstdio>
#include<cstring>
#define N 26
using namespace std;
int n,m,ans;
int edg[N][N],vis[N][N]; void search(int cur,int len){
ans=max(ans,len);
for(int i=;i<n;i++){
if(edg[cur][i]==||vis[cur][i]==) continue;//如果两顶点不相连或已访问过,就跳过
vis[cur][i]=vis[i][cur]=;//选择这个边并继续搜索
search(i,len+);
vis[cur][i]=vis[i][cur]=;//复原 回溯
}
} int main(){
while(scanf("%d%d",&n,&m)!=EOF&&(n||m)){
int a,b;
memset(edg,,sizeof(edg));
for(int i=;i<m;i++){
cin>>a>>b;
edg[a][b]=edg[b][a]=;//连边
}
ans=;
for(int i=;i<n;i++){
memset(vis,,sizeof(vis));//清空访问
search(i,);
}
cout<<ans<<endl;
}
return ;
}

UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索的更多相关文章

  1. 八皇后問題 (C語言递归實現 回溯法)

    八皇后问题是一个以国际象棋为背景的问题:怎样可以在 8×8 的国际象棋棋盘上放置八个皇后,使得不论什么一个皇后都无法直接吃掉其它的皇后?为了达到此目的.任两个皇后都不能处于同一条横行.纵行或斜线上.現 ...

  2. 洛谷 P1219八皇后

    把全部,在这251秒,赌上! ——<游戏人生zero> 题目:https://www.luogu.org/problem/P1219 八皇后是一道非常非常非常经典的深搜+回溯的题目. 这道 ...

  3. LeetCode 31:递归、回溯、八皇后、全排列一篇文章全讲清楚

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天我们讲的是LeetCode的31题,这是一道非常经典的问题,经常会在面试当中遇到.在今天的文章当中除了关于题目的分析和解答之外,我们还会 ...

  4. uva 167 - The Sultan&#39;s Successors(典型的八皇后问题)

    这道题是典型的八皇后问题,刘汝佳书上有具体的解说. 代码的实现例如以下: #include <stdio.h> #include <string.h> #include < ...

  5. Uva 167 The Sultan's Successors(dfs)

    题目链接:Uva 167 思路分析:八皇后问题,采用回溯法解决问题. 代码如下: #include <iostream> #include <string.h> using n ...

  6. 八皇后算法的另一种实现(c#版本)

    八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...

  7. 数据结构0103汉诺塔&八皇后

    主要是从汉诺塔及八皇后问题体会递归算法. 汉诺塔: #include <stdio.h> void move(int n, char x,char y, char z){ if(1==n) ...

  8. Python学习二(生成器和八皇后算法)

    看书看到迭代器和生成器了,一般的使用是没什么问题的,不过很多时候并不能用的很习惯 书中例举了经典的八皇后问题,作为一个程序员怎么能够放过做题的机会呢,于是乎先自己来一遍,于是有了下面这个ugly的代码 ...

  9. Python解决八皇后问题

    最近看Python看得都不用tab键了,哈哈.今天看了一个经典问题--八皇后问题,说实话,以前学C.C++的时候有这个问题,但是当时不爱学,没搞会,后来算法课上又碰到,只是学会了思想,应该是学回溯法的 ...

随机推荐

  1. Ruby对象模型总结

    参考<Ruby元编程>,元编程,即 用来编写代码的代码 . 对象由一组实例变量和一个类的引用组成 对象的方法存在与对象所属的类中,类似js中的prototype,在ruby中准确的说,应该 ...

  2. django框架知识3

    1.Django安装: 1.安装版本Django1.11.11 2.安装方式:命令行安装   pycharm安装 2.创建Django项目 1.创建方式:cd到你要创建的目录下  然后输入 Djang ...

  3. cell内存优化

    UITableView的常用属性: 分割线颜色设置: 1> 设置separatorStyle: 分割线的颜色 方法:tableView.separatorStyle = UITableViewC ...

  4. c++的substr()函数

    substr()函数注意:string str =“Hello”: substr(0,4)=“Hell”,0是起始位置,4是要复制的长度,strlen函数输出的是除了结束符"\0" ...

  5. react native设置容器阴影

    shadowColor:'#eee',shadowOffset:{h:10,w:10},shadowRadius:3,shadowOpacity:0.8,

  6. C - Brackets

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  7. iOS开发 - 多线程实现方案之Pthread篇

    pthread基础 pthread是POSIX thread的简写,一套通用的多线程API,适用于Unix.Linux.Windows等系统,跨平台.可移植,使用难度大,C语言框架,线程生命周期由程序 ...

  8. SqlServer存储过程调用接口

    因项目需求.需实现新增数据->触发器->存储过程->调用接口. https://blog.csdn.net/u010485134/article/details/58603370 另 ...

  9. Codeforces 1107F(dp)

    怎么就没人解释一下为啥用b排序可以保证正确性呢……太菜了,理解了好久. 时间流逝价值会丢失的背包,类似题洛谷1417 本题与洛谷1417不同之处在于流逝是有截止的. 1.这个dp[j]的含义是:最后跑 ...

  10. python入门之数据类型之字符串

    str方法 name.capitalize() 将name的首字母大写 name.center(20,'*') 将name居中,长度变为20,其余用*填充 name.count('chy') 返回na ...