八皇后非递归算法c语言,要求;编写实现八皇后问题的递归解法或非递归解法,对于任意给定的一? 爱问知识人...
将下面程序改成运行后需要输入起始位置(第N行第M列)然后输出结果。
#include
#include
enum Status {TRUE,FALSE}; //枚举状态
int matrix[
将下面程序改成运行后需要输入起始位置(第N行第M列)然后输出结果。
#include
#include
enum Status {TRUE,FALSE}; //枚举状态
int matrix[8][8]; //2位矩阵
int a[8],b[15],c[15]; //按行设置标志位
int count; //统计个数
//初始化函数
void init()
{
for(int i=0;i<8;i++){
for(int j=0;j<8;j++)
matrix[i][j]=0; //矩阵置0
a[i]=-1; //标志位置-1
}
for(i=0;i<15;i++)
b[i]=c[i]=0; //标志位置0
count=0; //统计个数置0
}
//矩阵输出
void show(){
printf("\n");
for(int i=0;i<8;i++){
for(int j=0;j<8;j++)
printf("%d ",matrix[i][j]);
printf("\n");
}
}
//判断是否可以放置,TRUE可以;FALSE不可以
Status isAvailable(int row,int column){
if(a[column]!=-1||b[row+column]==1||c[7-(column-row)]==1)//当前列被放置,或者该列所在的行和所在列存在放置,不可以放置
return FALSE;
for(int i=0;i<8;i++)
if(a[i]==row) //当前列为行号,不可以放置
return FALSE;
return TRUE;
}
//重置矩阵所在行和列,进行局部清零
void reset(int row,int column){
matrix[row][column]=b[row+column]=c[7-(column-row)]=0;
a[column]=-1;
}
//如果可以放置,置所在的坐标位置为1
void set(int row,int column){
matrix[row][column]=b[row+column]=c[7-(column-row)]=1;
a[column]=row;
}
//对当前行的各个列进行递归调用,寻找放置位置
void recurse(int row,int column){
int nextcolumn=column+1;
for(int i=0;i<8;i++){
if(isAvailable(i,nextcolumn)==TRUE){//如果能放置
set(i,nextcolumn); //置1代表放置成功
if(nextcolumn==7){
show();
count++;
}
recurse(i,nextcolumn);
reset(i,nextcolumn);
}
}
}
int main(){
init();
for(int i=6;i<7;i++){
// matrix[row][column]=b[row+column]=c[7-(column-row)]=1;
matrix[5][6]=b[5+6]=c[7-(6-5)]=1;
if(isAvailable(i,0)==TRUE){
set(i,0);
recurse(i,0);
reset(i,0);
}
}
printf("\n一共有%d个解\n",count);
return 0;
}
展开
全部
八皇后非递归算法c语言,要求;编写实现八皇后问题的递归解法或非递归解法,对于任意给定的一? 爱问知识人...相关推荐
- c语言编写考试程序,c语言考试编写三个程序:1.从键盘输入一些字符,逐个把它们送到磁? 爱问知识人...
下面三段程序代码都是我在VC6.0编译器上调试通过的.请给分 //test1-2.c #include #include int main() { FILE *fp = fopen("fil ...
- 饭店菜单选择c语言,求C语言大神,帮忙做一下这个题,要源代码设计实现一个餐厅点餐系统? 爱问知识人...
求C语言大神,帮忙做一下这个题,要源代码 设计实现一个餐厅点餐系统,实现电子点餐.要求实现二级菜单: 一级菜单: 请选择: 1.点餐 2.查看已点菜品 3.添菜 求C语言大神,帮忙做一下这个题,要源代 ...
- c语言线性表的逆转,数据结构(C语言)设有一个线性表E,将线性表逆置,要求逆线性表占? 爱问知识人...
输入数据,输出数据,及线性表的长度, 询问是否查找数据,若查找则由用户输入需查找的数据,显示此数据在线性表中的位置(第几个) */ #include #include #define NULL 0 # ...
- c语言输入1到12月份,C语言高手请进下面是一个日历表,运行结果中能不能把1~12月份改 爱问知识人...
下面是一个日历表,运行结果中能不能把1~12月份改为英文的?要怎样改啊,谢谢!#include#includemain(){int i=0,m=0,k,j,n=0,l,first;int x[3]={ ...
- 马踏棋盘问题的程序c语言,请各位C语言大神解释下马踏棋盘的程序,各模块功能,原理,方法,如? 爱问知识人...
//宏定义棋盘大小#define SIZE 100int board[M][M];typedef struct direct { int r,c,pathnum ;}dir ;typedef stru ...
- 快速排序非递归算法c语言实现,数据结构与算法----3.5 非递归的快速排序方法
[c++]代码库#include using namespace std; #include using namespace std; typedef int KeyType; struct LEle ...
- c语言编译小学生计算题,小学生基本运算习题-给小学生编写练习20以内加减法计算的c程序.要求:#61548 爱问知识人...
/*有于网吧机器没有编译器,程序尚为调试,不过估计问题不大,而且没有做任何异常处理,增加可以以自己修改*/ #include #include #include #include void main( ...
- c语言的考试是操作电脑还是写试卷,C语言考试试卷都是基础的题目,由于本人没学过C语言,求各位帮忙, 爱问知识人...
都是基础的题目,由于本人没学过C语言,求各位帮忙,通过后再给一次分一.单项选择题(10道小题,共10分) 1.以下程序的输出结果是:main(){int x; for(x=1;x<10;x++) ...
- c语言课后题2.52.8答案,C语言练习题(8)-只要答案不要分析,要速度,要正确51.(1 爱问知识人...
51. (1分)有以下程序 main() { int x=3, y=2, z=1; printf("%d\n",x/y&~z); } 程序运行后的输出结 ...
最新文章
- 全中了!接手同事项目时最崩溃的事 | 每日趣闻
- linux设备驱动归纳总结
- SpringBoot 使用(三): 配置文件详解
- boost::safe_numerics::checked_result相关的测试程序
- Ubuntu查看系统任务管理器(cpu+内存资源占用)+查看虚拟机分配核心数
- Cluster_analysis
- python+selenium 浏览器无界面模式运行
- IOS内购流程从0-1手把手教会
- 生成用于ASP.NET Web API的C#客户端API
- 区块链优秀gitbook资料
- 95后大学生利用漏洞免费吃肯德基获刑;Linux内核初步支持苹果M1;Android Studio 4.2 发布|极客头条...
- oracle 安全备份与rman_Oracle RMAN备份与还原注意事项
- oppo r11s鸿蒙固件,OPPO R11s Plus原厂rom固件系统升级包下载
- 红米note2能刷机没显示无服务器,红米Note2刷机失败怎么办
- IP的子网和超网划分
- 应该怎么学大数据?该从哪学起?
- 智能家居十大必备功能 乐享真正智能生活
- 前端制作PUBG瞄准镜!
- php tcpdf 没有头部,TCPDF使用总结 - 从头笑到尾的个人空间 - OSCHINA - 中文开源技术交流社区...
- idea 项目能运行,但是代码冒红-解决措施
热门文章
- 怎样设计一个良好大数据处理的解决方案?
- 2.4寸液晶控制方法
- 最全CSS各种布局详解
- C++回调机制的几种实现方式
- 微信小程序搜索多个关键字高亮
- IOS开发地理编码与反向编码
- java调用 火眼臻睛,连接创新,发现未来,臻识科技受邀CCF-GAIR,论道浪潮之巅...
- 除外存外 微型计算机的存储系统一般指,除外存之外,微型计算机的存储系统一般指()...
- 【BUG记录】Matisse显示的图片乱序或者在全部项不显示
- html如何将多个复选框组织成一组_[Selenium]18.如何处理一组元素