下载 > 资源分类 >  课程资源 >  C/C++ > n皇后问题的求解答案

n皇后问题的求解答案

2011-07-06 上传大小:28KB
#include <iostream>
#include <vector>
using namespace std;

void backtrack(int, vector<int>, int, int);
bool place(int, vector<int>);
void displayqueen(vector<int>, int, int);

int sum = 0;

int main(void)
{
	int N;
	int kind;
	
	co
ut<<"请输入皇后的个数:";
	cin>>N;
	vector<int> x(N+1,0);
	
	cout<<"----------------------------------"<<endl;
	cout<<'\t'<<"结果显示的形式:"<<endl;
	cout<<'\t'<<"  1.直接形式."<<endl;
	cout<<'\t'<<"  2.矩阵形式."<<endl;
	cout<<"----------------------------------"<<endl;
	cout<<"请输入你想显示结果的形式:";
	cin>>kind;
	
	backtrack(1, x, N, kind);
	
	return 0;
}

void backtrack(int t, vector<int> x, int N, int kind)
{
	if(t > N)
	{
		sum += 1;
		displayqueen(x, N, kind);
	}
	else
	{
		for(int i=1; i<N+1; i++)
		{
			x[t] = i;
			
			if(place(t, x))
			{
				backtrack(t+1, x, N, kind);
			}
		}
	}
}

bool place(int k, vector<int> x)
{
	for(int j=1; j<k; j++)
	{
		if((abs(k-j) == abs(x[k]-x[j])) || (x[k] == x[j]))
		{
			return false;
			break;
		}
	}
	
	return true;
}

void displayqueen(vector<int> x, int N, int kind)
{
	if(kind == 1)
	{
		cout<<"第"<<sum<<"个解:";
		
		for(int i=1; i<N+1; i++)
		{
			cout<<x[i]<<' ';
		}
		cout<<endl;
	}
	else
	{
		vector<vector<int> > S(N+1, vector<int>(N+1));

		for(int i=1; i<N+1; i++)
		{
			for(int j=1; j<N+1; j++)
			{
				S[i][j] = 0;
			}
		}

		for(i=1; i<N+1; i++)
		{
			for(int j=1; j<N+1; j++)
			{
				S[i][x[i]] = 1;
			}
		}
		
		cout<<"第"<<sum<<"个解:"<<endl;
		
		for(i=1; i<N+1; i++)
		{
			for(int j=1; j<N+1; j++)
			{
				cout<<S[i][j]<<' ';
			}
			cout<<endl;
		}
	}
}
...展开收缩
综合评分:5(1位用户评分)
开通VIP C币充值 立即下载

评论共有1条

jiay9087 2013-01-02 19:17:36
不错的 可以运行 谢谢楼主分享啊 收下好好学习下了啊~~~

登录后才能评论

 
N皇后问题求解 立即下载
积分/C币:0
一个同学做的N皇后问题求解 立即下载
积分/C币:3
N皇后问题求解(C++) 立即下载
积分/C币:5
应用C++实现N皇后问题的求解 立即下载
积分/C币:3
Java编写的N皇后问题 立即下载
积分/C币:3
数据结构课程设计n皇后问题的代码实现 立即下载
积分/C币:3
N皇后的问题 立即下载
积分/C币:3
qt实现n皇后问题(带界面) 立即下载
积分/C币:2
N皇后问题代码 立即下载
积分/C币:0
回溯法求N皇后问题 立即下载
积分/C币:3
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
扫码关注并点击右下角获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

n皇后问题的求解答案

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
C币充值 开通VIP
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励5下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: