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. bzoj4300 绝世好题 【dp】By cellur925

    题目描述: 给定一个长度为\(n\)的数列\(a\),求\(a\)的子序列\(b\)的最长长度,满足bi&bi-1!=0(\(2<=i<=len\)). 90分做法: 并没有部分分 ...

  2. struts工作原理

    在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.ActionMapping.Configuration Man ...

  3. 测试 | 单元测试工具 | JUnit | 参数化

    被测试类: package project; public class MyCalendar2 { public int getNumberOfDaysInMonth(int year, int mo ...

  4. linux常用命令(ubuntu)

    编辑: vi [path] vim [path] :q 退出 :wq 保存退出 查看进程 ps ps -aux | grep mem 查看全部含 “mem”的进程 ps –aux  查看全部 在系统启 ...

  5. 两句话跳转QQ聊天界面 通过web方式

    NSString *qq=[NSString stringWithFormat:"]; NSURL *url2 = [NSURL URLWithString:qq]; if ([[UIApp ...

  6. django 之 rest framework

    一 二 三 四 五 六 七 八

  7. Jasper_table_resolve multiple copies of table in detail band issue

    resolve method: (1) put table component into the Title band / Page Header band / Summary band, not i ...

  8. 物体检测丨Faster R-CNN详解

    这篇文章把Faster R-CNN的原理和实现阐述得非常清楚,于是我在读的时候顺便把他翻译成了中文,如果有错误的地方请大家指出. 原文:http://www.telesens.co/2018/03/1 ...

  9. corn表达式 经典

    https://www.cnblogs.com/GarfieldTom/p/3746290.html

  10. 利用nodejs读取数据库数据生成树结构的json数据

    在做后台管理界面的时候,几乎少不了的一个结构就是树形结构,用来做菜单导航: 那么,最希望的就是树结构的所有数据都是读取的数据库,而不是直接代码当中写死,那我们就一步一步来看: 一,建表 字段通常包括: ...