ai-2698-八皇后问题-C语言-递归求解
2017-05-09 22:14
351 查看
算法丑陋,速度略慢,还望指教。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
short queenplaces[92][8];//每个8位数组记录了那一列皇后所在的列index
short nowline=0;
short board[8][8];
void putqueen(int n)//n+1表示正在解决哪一个皇后了
{
short i,j,k;
if(n==8)
{
nowline++;
return;
}
for(i=0;i<8;i++)
{
if(board[i]
==0)
{
for(j=nowline;j<92;j++)
queenplaces[j]
=i;
board[i]
=1;
for(j=0;j<8;j++)
for(k=0;k<8;k++)
(board[j][k]==0&&(i==j||n==k||abs(i-j)==abs(k-n)))?(board[j][k]=n+1):0;
putqueen(n+1);
for(j=0;j<8;j++)
for(k=0;k<8;k++)
(board[j][k]==n+1&&(i==j||k==n||abs(i-j)==abs(k-n)))?(board[j][k]=0):0;
board[i]
=0;
}
}
}
int main()
{
short i,j,k;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
board[i][j]=0;
putqueen(0);
for(i=0;i<92;i++)
{
printf("No. %d\n",i+1);
for(j=0;j<8;j++)
{
for(k=0;k<8;k++)
(j==queenplaces[i][k])?(printf("1 ")):(printf("0 "));
printf("\n");
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
short queenplaces[92][8];//每个8位数组记录了那一列皇后所在的列index
short nowline=0;
short board[8][8];
void putqueen(int n)//n+1表示正在解决哪一个皇后了
{
short i,j,k;
if(n==8)
{
nowline++;
return;
}
for(i=0;i<8;i++)
{
if(board[i]
==0)
{
for(j=nowline;j<92;j++)
queenplaces[j]
=i;
board[i]
=1;
for(j=0;j<8;j++)
for(k=0;k<8;k++)
(board[j][k]==0&&(i==j||n==k||abs(i-j)==abs(k-n)))?(board[j][k]=n+1):0;
putqueen(n+1);
for(j=0;j<8;j++)
for(k=0;k<8;k++)
(board[j][k]==n+1&&(i==j||k==n||abs(i-j)==abs(k-n)))?(board[j][k]=0):0;
board[i]
=0;
}
}
}
int main()
{
short i,j,k;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
board[i][j]=0;
putqueen(0);
for(i=0;i<92;i++)
{
printf("No. %d\n",i+1);
for(j=0;j<8;j++)
{
for(k=0;k<8;k++)
(j==queenplaces[i][k])?(printf("1 ")):(printf("0 "));
printf("\n");
}
}
return 0;
}
相关文章推荐
- C语言回溯法递归求解八皇后问题
- 递归--基于位运算的八皇后问题求解
- Python求解“八皇后”问题的递归思路
- 关于递归求解八皇后问题
- C语言实现Hanoi(汉诺塔)问题的递归求解
- 黑马程序员--汉诺塔问题的递归求解C语言
- C语言进阶-第6讲:递归法问题求解(易列写递归方程)
- 八皇后问题-C语言求解
- Matlab 递归求解八皇后问题
- 【递归】:poj2698,八皇后问题
- 八皇后问题求解——之递归
- 八皇后问题递归求解易出错问题
- C语言-数据结构-递归求解实例-8皇后问题
- 八皇后问题--递归求解
- 八皇后问题递归求解二
- 利用递归求解八皇后问题
- 八皇后递归求解问题
- 递归求解N皇后问题(c语言)
- C语言进阶-第6讲:递归法问题求解(递归求数组的最大值)
- 递归问题求解学习一