数据结构上机作业3:栈——八皇后
来源:互联网 发布:postgresql vs mysql 编辑:程序博客网 时间:2024/05/18 13:42
问题描述:
用栈来求解N皇后问题
作者:何知令
用栈来求解N皇后问题
作者:何知令
完成时间:2017年5月21日
代码:
/*问题描述:用栈来求解N皇后问题作者:何知令完成时间:2017年5月21日*/#include <stdio.h>#include <stdlib.h>typedef struct{ int data[20]; int top;} sqstack;sqstack st;void push(int col)//进栈{ st.top++; st.data[st.top]=col;}void pop()//出栈{ st.top--;}int output(int k,int n)//输出栈内所有元素{ int i,j; k++; printf("第%d个解:\n",k); for(i=0; i<n; i++) { for(j=0; j<st.data[i]; j++); printf("<%d,%d> ",i,j); for(j=n-1; j>st.data[i]; j--); } printf("\n"); return k;}int judgement()//判断该位置是否可以排放皇后{ int i; for(i=0; i<st.top; i++) if(st.data[st.top]==st.data[i]||abs(st.data[st.top]-st.data[i])==st.top-i)//如果当前皇后摆放位置与之前摆放的皇后处于同行同列或者同一斜线上则不能摆放在该位置,返回0 return 0; return 1;}int placequeen(int row,int k,int n,int a[][n])//排放皇后{ int col; for(col=0; col<n; col++) { push(col); if(judgement()) { if(row<n-1) k=placequeen(row+1,k,n,a); else { k=output(k,n); } } pop(); } return k;}int main(){ int i,j,n,k=0; printf("皇后问题<n<20> n="); scanf("%d",&n); int a[n][n]; for(i=0; i<n; i++) for(j=0; j<n; j++) a[i][j]=0; printf("%d皇后问题如下:\n",n); st.top=-1; placequeen(0,k,n,a); return 0;}程序运行结果展示:
知识点总结:栈,回溯
学习心得:难~慢慢学吧
阅读全文
0 0
- 数据结构上机作业3:栈——八皇后
- 数据结构上机实验3——N皇后问题栈求解
- 数据结构——八皇后问题递归代码实现
- 数据结构与算法Java版——八皇后问题
- 【数据结构】八皇后
- 数据结构-八皇后算法
- 八皇后问题—>n皇后问题
- 数据结构上机作业3-哈夫曼编码
- 数据结构上机——栈
- 八皇后 —— 递归
- 算法——八皇后
- 计蒜客—八皇后问题
- c++上机作业3——个人所得税
- c++上机实验3——作业
- 数据结构之八皇后问题
- 数据结构之八皇后问题
- 数据结构(八皇后问题)
- 八皇后问题(C语言代码——小甲虫数据结构)
- 第二讲 使用Spring IoC创建对象的3种方式
- Javaweb中快速生成验证码Captcha
- 云服务器 ECS YUM 在线安装软件方法和常见问题处理
- Qt 界面窗口设置
- TensorFlow在Windows 7上的详细安装步骤
- 数据结构上机作业3:栈——八皇后
- 深度优先搜索例1--走迷宫问题
- Web.xml详解
- STC15系列单片机命名规则
- yii2.0 验证码功能的实现
- LeetCode -- 121. Best Time to Buy and Sell Stock
- Notification详解(三)
- PI复制新CC
- Cloudstack-agent KVM计算节点的安装