--
[m [1;32m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 203.65.191.45] [m
八個皇后
#include <stdio.h>
#include <conio.h>
int crosscheck(int , int) ;
int verticalcheck(int , int) ;
int safe(int , int) ;
void print(int [][8]) ;
void tryrow(int) ;
static int q[8][8] ;
static cnt = 0 ;
int main(void)
{
int i , j ;
for(i = 0 ; i <= 7 ; i++)
for(j = 0 ; j <= 7 ; j++)
q[i][j] = 0 ;
tryrow(0) ;
return 0 ;
}
int crosscheck(int x , int y)
{
int i , j ;
i = x ;
j = y ;
while( (i > 0) && (j > 0) )
{
i -= 1 ;
j -= 1 ;
if(q[i][j])
return 0 ;
}
i = x ;
j = y ;
while( (i < 7) && (j > 0) )
{
i += 1 ;
j -= 1 ;
if(q[i][j])
return 0 ;
}
return 1 ;
}
int verticalcheck(int x , int y)
{
while(y > 0)
{
y -= 1 ;
if(q[x][y])
return 0 ;
}
return 1 ;
}
int safe(int x , int y)
{
return( crosscheck(x,y) && verticalcheck(x,y) ) ;
}
void print(int a[8][8])
{
int i , j ;
clrscr() ;
gotoxy(21, 4) ; printf("I-------------------------------I") ;
gotoxy(21, 5) ; printf("I I I I I I I I I") ;
gotoxy(21, 6) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21, 7) ; printf("I I I I I I I I I") ;
gotoxy(21, 8) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21, 9) ; printf("I I I I I I I I I") ;
gotoxy(21,10) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21,11) ; printf("I I I I I I I I I") ;
gotoxy(21,12) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21,13) ; printf("I I I I I I I I I") ;
gotoxy(21,14) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21,15) ; printf("I I I I I I I I I") ;
gotoxy(21,16) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21,17) ; printf("I I I I I I I I I") ;
gotoxy(21,18) ; printf("I---+---+---+---+---+---+---+---I") ;
gotoxy(21,19) ; printf("I I I I I I I I I") ;
gotoxy(21,20) ; printf("I-------------------------------I") ;
for( i = 0 ; i <= 7 ; i++ )
for( j = 0 ; j <= 7 ; j++ )
if(a[i][j])
{
gotoxy(i * 4 + 23 , j * 2 + 5) ;
printf("Q") ;
}
gotoxy(32,22) ;
printf("count = %d", cnt) ;
}
void tryrow(int row)
{
int column = 0 ;
do
{
if(safe(column , row))
{
q[column][row] = 1 ;
if(row < 7)
tryrow(row + 1) ;
else
{
cnt += 1 ;
print(q) ;
if(getch() == 0)
{
getch() ;
clrscr() ;
exit(0) ;
}
}
q[column][row] = 0 ;
}
column += 1 ;
}while(column < 8) ;
}
世新資管小薛提供
世新資管小薛提供
--
[m [1;35m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 163.30.13.149] [m