有关N皇后问题
来源:百度知道 编辑:UC知道 时间:2024/06/06 05:27:10
#include <stdio.h>
#include <math.h>
#include <conio.h>
int n=4;
int a[100];
int panduan(int k)
{
int i=1;
while((i<k)&&(a[i]!=a[k])&&(fabs((a[i]-a[k])/(i-k))!=1))
i++;
if(i==k)return 1;
else return 0;
}
int zx(int k)
{int i,f;
if(k>n)
{printf("\n");
for(i=1;i<n+1;i++)
printf("%d ",a[i]);
printf("\n");
getch();
}
else
{for(i=1;i<n+1;i++)
{
a[k]=i;
//printf("%d %d ",k,a[k]);getch();
if(panduan(k)==1)
zx(k+1);}
}
}
main()
{
zx(1);
scanf("%*d");
}
该程序执行正常
但是将n=8后,则没有输出
将数组改为【10000】后也无输出
请高手明示原因
谢谢1楼的亲
但这不是我想要的解释啊!
我的程序哪里出问题了
请高人明示,有必要的
#include <math.h>
#include <conio.h>
int n=4;
int a[100];
int panduan(int k)
{
int i=1;
while((i<k)&&(a[i]!=a[k])&&(fabs((a[i]-a[k])/(i-k))!=1))
i++;
if(i==k)return 1;
else return 0;
}
int zx(int k)
{int i,f;
if(k>n)
{printf("\n");
for(i=1;i<n+1;i++)
printf("%d ",a[i]);
printf("\n");
getch();
}
else
{for(i=1;i<n+1;i++)
{
a[k]=i;
//printf("%d %d ",k,a[k]);getch();
if(panduan(k)==1)
zx(k+1);}
}
}
main()
{
zx(1);
scanf("%*d");
}
该程序执行正常
但是将n=8后,则没有输出
将数组改为【10000】后也无输出
请高手明示原因
谢谢1楼的亲
但这不是我想要的解释啊!
我的程序哪里出问题了
请高人明示,有必要的
这是我写的,可以看看,呵呵
#define N 4
#include <stdio.h>
#include <conio.h>
void main()
{
void set(int array[][N]);
void show(int array[][N]);
void findpos(int deep,int array[][N]);
void makepos(int y,int x,int array[][N]);
void unmakepos(int y,int x,int array[][N]);
int queen[N][N];
set(queen);
findpos(N-1,queen);
}
void set(int array[][N])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
array[i][j]=0;
}
void show(int array[][N])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(array[i][j]==N+1)
printf("%c ",1);
else
printf(". ");
}
printf("\n");
}
printf("\n\n\n");
}
void makepos(int y,int x,int array[][N])
{
int i,j;
if(x>