8 황후 문제 의 해법 실례 코드
#include <stdio.h>
#define MAX 200
#define Empty 0
#define Full 1
#define N 8
unsigned char qipan[N][N][N]={MAX};// 8
void input(int i);
int count = 0;
int main()
{
input(0);
getchar();
return 0;
}
void input(int i)
{
int x=0,y=0;
int p=0,q=0;
int flag = 0;
//
if(i!=0)
{
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
qipan[i][x][y] = qipan[i-1][x][y];
}
}
}
else
{
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
qipan[i][x][y] = MAX;
}
}
}
//
if(i==N)
{
count++;
for(x=0;x<N;x++)
{
for(y=0;y<N;y++)
{
printf("%d ",qipan[i-1][x][y]);
}
printf("
");
}
printf("%d
",count);
return;
}
for(y=0;y<N;y++)
{
//
if(qipan[i][i][y]==MAX)
{
// 1
qipan[i][i][y] = 1;
// 0
for(p=0;p<N;p++)
{
for(q=0;q<N;q++)
{
if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))
if(qipan[i][p][q] == MAX)
qipan[i][p][q] = 0;
}
}
if(flag != -1)
{
//
input(i+1);
}
//
for(p=0;p<N;p++)
{
for(q=0;q<N;q++)
{
if(i!=0)
qipan[i][p][q] = qipan[i-1][p][q];
else
qipan[i][p][q] = MAX;
}
}
flag =0;
}
}
//
return;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 2553 N 황후 문제 (역시 DFS)N * N 의 격자 바둑판 에 N 개의 황 후 를 배치 하여 서로 공격 하지 않 게 합 니 다 (즉, 임의의 2 명의 황 후 는 같은 줄 에 있 는 것 을 허락 하지 않 습 니 다. 같은 열 에 있 는 것 도 허락 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.