C编程的指针涛 ---第十笔记
//指针实例搜索算法
//迷宫算法
//搜索是最长的使用深度优先搜索和广度优先搜索
//作为名称作为一个深度优先搜索,每路一直在寻找到底。
//为了防止想法,这样的数据结构
//使得每次找到思路的时候还能够退出到出发点。
//
//
//广度优先搜索
//广度优先搜索就是利用队列性质先进先出的性质,把每次的搜索结果放入队列,
//排除思路等条件
//
//回溯法
//就是枚举每一个可能的推断,假设能够就运行,不能够就返回開始的地方
//八皇后的实现:回溯法
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int a[9] = {100};
//用来存放解的个数
int count = 0;
int Place(int i, int value)
{
int j;
if(i == 1)
return 1;
for(j = 1; j < i; ++j)
{
if(a[j] == value)
return 0;
if(abs(i - j) == abs(value - a[j]))
return 0;
}
return 1;
}
void ShowResult()
{
int i, j;
for(j = 1; j <= 8; ++j)
{
for(i = 1; i < a[j]; ++i)
{
printf("* ");
}
printf("Q");
for(i = i + 1; i <= 8; ++i)
{
printf("* ");
}
printf("\n");
}
}
void Backtrack(int t)
{
int i;
if(t > 8)
{
printf("*********************");
ShowResult();
count++;
return;
}
else
{
for(i = 1; i <= 8; ++i)
{
if(Place(t, i))
{
a[t] = i;
Backtrack(t + 1);
}
}
}
}
void ShowCount()
{
printf("\n八皇后的问题共同拥有%d个解:\n", count);
}
int main()
{
Backtrack(1);
ShowCount();
return 0;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
C编程的指针涛 ---第十笔记的更多相关文章
- C编程的指针涛 ---第九笔记
//这里说的是一个指针,指向算法的应用 //直接排序 //每个排序算法是指针指向的每个元件的特性的方便的交流 //这里的基本思想是,处理的记录的排序n - 1第二选择. //第i次操作选择i大(小)的 ...
- 【unix网络编程第三版】阅读笔记(五):I/O复用:select和poll函数
本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O ...
- 《Linux命令、编辑器与shell编程》第三版 学习笔记---002
<Linux命令.编辑器与shell编程>第三版 学习笔记---001 Linux命令.编辑器与shell编程 Shell准备 1.识别Shell类型 echo $0 echo $BAS ...
- python编程:从入门到实践学习笔记
python编程:从入门到实践学习笔记 原文地址:https://blog.csdn.net/qq_35554125/article/details/79548192 [day 1]python编程: ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十四)之Type Information
Runtime type information (RTTI) allow you to discover and use type information while a program is ru ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十二)之Error Handling with Exceptions
The ideal time to catch an error is at compile time, before you even try to run the program. However ...
- Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(十)之Inner Classes
The inner class is a valuable feature because it allows you to group classes that logically belong t ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...
- 2-Linux C语言指针与内存-学习笔记
Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 ...
随机推荐
- Android_declare-styleable_自己定义控件的属性
1.简单实例 (1).在res/values文件下定义一个attrs.xml文件 <? xml version="1.0" encoding="utf-8" ...
- 在SQLAlter在现场一定的价值
update AA set aa = replace(aa,'1234','规范') where aa like '%1234%'
- C++习题 复数类--重载运算符2+
Description 定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意.例如,c1+ ...
- Eclipse 打JAR包,插件FatJar 安装与使用
下载fatJar插件,解压缩后是一个.../plugins/(net...)把plugins下面的(net..)文件夹拷贝到eclipse的plugins下,重新启动Eclipse3.1,Window ...
- 什么是流利语法Fluent Syntax
出处:http://blog.csdn.net/u010019717 author:孙广东 时间:2015.3.18 23:00 编程新概念:什么是流利语法fluent synta ...
- 2048 Puzzle游戏攻略
2048 Puzzle这是目前手机游戏的很火. 在地铁上经常看到的人玩这个游戏. 首先,简介2048 Puzzle游戏. 游戏界面是4X4广场格,每一方格可以放置在数字. 有四种移动数字的方法,向左. ...
- 【v2.x OGE课程 14】 控制使用
在这里,精灵.动画精灵.button天才.经常使用的文本的使用 一个.相关精灵 1.加入精灵 //创建精灵 Sprite bar_up = new Sprite(400, 0, RegionRes.g ...
- 用Jstack跟踪Cpu占用率的Java线程(转)
以下方法在centOS下执行通过:1.先定位占用cpu高的进程 top 2.使用以下命令 ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sor ...
- 返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor)
原文:返璞归真 asp.net mvc (9) - asp.net mvc 3.0 新特性之 View(Razor) [索引页][源码下载] 返璞归真 asp.net mvc (9) - asp.ne ...
- maven配置文件里改动默认jre
方法一:打开%maven_home%\conf\setting.xml,仅仅会在新建项目时自己主动使用1.6的导入项目不会 在<profiles>标签内加入�例如以下配置: <pro ...