多维数组------八皇后问题
来源:互联网 发布:上知教育一个月多少钱 编辑:程序博客网 时间:2024/05/16 19:15
/*
八皇后问题
在8*8的棋盘上摆放8个皇后,不能处于一排一列或者一斜线上,,使其不能相互攻击
*/
#include <stdio.h>
#include <math.h> //使用绝对值函数asb
const int N = 100; //最多求100皇后问题
int x[N] = {-1}; //数组初始化为-1
int Place(int k);
void PrintQueue(int n);
void Queue(int n)
{
int k = 0,num = 0;
while(k>=0) //摆放皇后k,
{
x[k]++; //在下一列摆放皇后k
while(x[k] < n && Place(k) == 1) //发生冲突
x[k]++; //皇后k试探下一列
if(x[k] < n && k==n-1)
{
printf("第%d个解是:",++num);
PrintQueue(n);
}else if(x[k] <n && k<n-1) //尚有皇后未摆放
k = k+1; //准备摆放下一个皇后
else
x[k--] = -1; //重置x[k],回溯,重新摆放皇后k
}
}
int Place(int k) //观察皇后k放置在x[k]列是否发生冲突
{
for(int i=0;i<k;i++)
if(x[i] == x[k] || abs(i+k) == abs(x[i] - x[k]))
return 1;
return 0;
}
void PrintQueue(int n)
{
for(int i=0;i<n;i++)
printf("%5d",x[i]+1); //数组下标从0开始,打印的列号从1开始
printf("\n");
}
int main()
{
int n;
printf("请输入皇后个数(n>=4)");
scanf("%d",&n);
Queue(n);
return 0;
八皇后问题
在8*8的棋盘上摆放8个皇后,不能处于一排一列或者一斜线上,,使其不能相互攻击
*/
#include <stdio.h>
#include <math.h> //使用绝对值函数asb
const int N = 100; //最多求100皇后问题
int x[N] = {-1}; //数组初始化为-1
int Place(int k);
void PrintQueue(int n);
void Queue(int n)
{
int k = 0,num = 0;
while(k>=0) //摆放皇后k,
{
x[k]++; //在下一列摆放皇后k
while(x[k] < n && Place(k) == 1) //发生冲突
x[k]++; //皇后k试探下一列
if(x[k] < n && k==n-1)
{
printf("第%d个解是:",++num);
PrintQueue(n);
}else if(x[k] <n && k<n-1) //尚有皇后未摆放
k = k+1; //准备摆放下一个皇后
else
x[k--] = -1; //重置x[k],回溯,重新摆放皇后k
}
}
int Place(int k) //观察皇后k放置在x[k]列是否发生冲突
{
for(int i=0;i<k;i++)
if(x[i] == x[k] || abs(i+k) == abs(x[i] - x[k]))
return 1;
return 0;
}
void PrintQueue(int n)
{
for(int i=0;i<n;i++)
printf("%5d",x[i]+1); //数组下标从0开始,打印的列号从1开始
printf("\n");
}
int main()
{
int n;
printf("请输入皇后个数(n>=4)");
scanf("%d",&n);
Queue(n);
return 0;
}
阅读全文
1 0
- 多维数组------八皇后问题
- 一维数组实现八皇后问题
- 第八章 数组 -- 八皇后问题
- C数组解决八皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 字符串数组的全排列到八皇后问题详解
- 字符串数组的全排列到八皇后问题详解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- Day14-HTTP协议 & web开发概述 & servlet快速入门
- Android——Service服务介绍
- 用原生JS实现一个简单计算的功能实例
- JavaScript基本概述
- 断舍离学习
- 多维数组------八皇后问题
- MYSQL日期和时间函数
- EffectiveC++学习笔记-条款18|19
- ES6 的变量对象解构
- The source file name(s) are larger than is supported by the file system
- android单例模式的用途
- 利用python爬取实习僧网站上的数据
- CSU 1809 Parenthesis
- 统计词性语料库