📄 012.cpp
字号:
#include <stdio.h>
#include <time.h>
#include <iostream.h>
int judge(int i,int j,int *rr)
{
for(int k=i-1;k>=0;k--)
{
if(j==rr[k] || i-k==j-rr[k] || i-k==rr[k]-j)
return 0;
}
return 1;
}
void main()
{
clock_t stime,etime;
int n,i=0,j=0,tt=0,k;
cout<<"请输入您所要求解的n值:";
cin>>n;
cout<<endl;
int *rr = new int[n];
for(k=0;k<n;k++)
rr[k]=0;
stime=clock();
for(j=0;j<n;)
{
if(j<n-1)
{
if(judge(i,j,rr)==1)
{
if(i==n-1)
{
tt++;
rr[i]=++j;
continue;
}
j=0;
rr[++i]=j;
}
else
{
rr[i]=++j;
continue;
}
}
if(j==n-1)
{
if(judge(i,j,rr)==1)
{
if(i==n-1)
{
tt++;
while(i>0 && rr[i]==n-1) --i;
j=++rr[i];
continue;
}
else
{
j=0;
rr[++i]=j;
}
}
else
{
while(i>0 && rr[i]==n-1) --i;
j=++rr[i];
continue;
}
}
}
etime=clock();
cout<<"程序运行时间为:"<<etime-stime<<"毫秒"<<endl;
cout<<n<<"皇后问题的解的个数为:"<<tt<<endl;
delete []rr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -