递归---n皇后
---恢复内容开始---
#include "stdafx.h"
#include <iostream>
#include <fstream> //文件流
#include <iomanip>
#include <cstdlib> using namespace std;
void queenSolve(int rowCurrent, int n, int *&queenlist, int &count, ofstream &os);
void Print(int n, int *&queenlist, ofstream &os);
bool Check(int rowCurrent, int *&queelist); int main()
{
int n;
cout << "请输入规模n: " << endl;
cin >> n;
if (n<)
{
cerr << "问题规模必须大于4" << endl;
return ;
} int *queenlist = new int[n];
int count = ;
ofstream os;
os.open("result.txt");
queenSolve(,n, queenlist, count, os);
cout << "共有" << count << "种解法" << endl;
os.close(); system("pause");
return ;
}
void Print(int n, int *&queenlist, ofstream &os){
for (int i = ; i < n; i++)
{
for (int j = ; j < n; j++){
os <<(queenlist[i] == j ? : );
os << setw(); //设置域宽为n个字符,<iomanip>
}
os << "\n";
}
os << "\n";
}
bool Check(int rowCurrent, int *&queelist){
for (int i = ; i < rowCurrent; i++){
if (queelist[rowCurrent] == queelist[i])
return false;
if (abs(rowCurrent - i) == abs(queelist[rowCurrent] - queelist[i])) //<cstdlib>
return false;
}
return true;
}
void queenSolve(int rowCurrent, int n, int *&queenlist, int &count, ofstream &os)
{
if (rowCurrent == n)
{
++count;
os << "第" << count << "个解" << endl;
Print(n,queenlist,os);
}
else{
for (int i = ; i < n; i++)
{
queenlist[rowCurrent] = i;
if (Check(rowCurrent, queenlist))
queenSolve(rowCurrent+, n, queenlist, count, os);
}
}
}
---恢复内容结束---
递归---n皇后的更多相关文章
- C#数据结构与算法系列(十四):递归——八皇后问题(回溯算法)
1.介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的经典案例,该问题是国际西洋棋棋手马克斯.贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即 任意两个皇后都不能处 ...
- 个人项目Individual Project:n皇后问题
源码的github链接: https://github.com/luhan420/test/tree/master 1.需求分析 在本次的课程设计中,用到的知识点主要有:类.函数.选择结构里的条件语 ...
- 递归实现n(经典的8皇后问题)皇后的问题
问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...
- 八皇后,回溯与递归(Python实现)
八皇后问题是十九世纪著名的数学家高斯1850年提出 .以下为python语句的八皇后代码,摘自<Python基础教程>,代码相对于其他语言,来得短小且一次性可以打印出92种结果.同时可以扩 ...
- java实现八皇后问题(递归和循环两种方式)
循环方式: package EightQueens; public class EightQueensNotRecursive { private static final boolean AVA ...
- YTU 3013: 皇后问题(递归)
3013: 皇后问题(递归) 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 题目描述 编写一个函数,求解皇后问题:在n*n的方格棋盘上,放置n个皇后,要求每个皇后不同行 ...
- C#中八皇后问题的递归解法——N皇后
百度测试部2015年10月份的面试题之——八皇后. 八皇后问题的介绍在此.以下是用递归思想实现八皇后-N皇后. 代码如下: using System;using System.Collections. ...
- 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,循环控制及其优化
上两篇博客 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现 研究了递归方法实现回溯,解决N皇后问题,下面我们来 ...
- 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同 ...
随机推荐
- Huffman树与编码的简单实现
好久没写代码了,这个是一个朋友问的要C实现,由于不会C,就用JAVA写了个简单的.注释掉的代码属性按照原来朋友发的题里带的参数,发现没什么用就给注释掉了. package other; import ...
- [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系
引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...
- 获取手机通讯录放入PinnedSectionListView中,按名字首字母排序,并且实现拨打电话功能。
package com.lixu.tongxunlu; import java.util.ArrayList; import com.lixu.tongxunlu.PinnedSectionListV ...
- (转载)全球唯一标识GUID
GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值. GUID ...
- 从ajax获取的数据无法通过Jquery选择器来调用事件
如果标签是动态生成的,比如说div.tr.td等,若需通过Jquery来获取事件,那么需要用live来绑定相应的事件. 比如说绑定div的click事件 $("div").live ...
- BroadCastReceiver相关知识--读书笔记
2013-12-30 16:55:07 1. BroadCastReceiver是Android四大组件之一,本质上是一个系统级的监视器. 2. 每次BroadCast事件发生后,系统都会创建对应的B ...
- Asp.net项目因Session阻塞导致页面打开速度变慢
发现罪魁祸首是Session阻塞造成的.默认情况下session状态是“可写状态”(EnableSessionState=”true”),即当用户打开任何一个页面时,该页面的Session就会持有一个 ...
- [安卓]The Google Android Stack
- Struts2 validate校验
一般的,用户注册的时候,我们需要校验一些用户提交过来的参数. 一般有两道屏障,一是在前台页面上使用js进行验证,直接杜绝了不正常信息的提交.二是将提交过来的信息进行验证,不通过则返回注册页面并显示错误 ...
- servlet filter可以用注解
现在好像可以在新建一个servlet.filter等的的时候在选项中设置urlmapping,通过注解的方式来监控action,以及设置初始参数initparameter.