c++ 八皇后
#include <stdio.h> char Chessboard[8][8]; int QueenPlace(int LocX,int LocY); int N_Queens(int LocX,int LocY,int Queens) { int i,j; int Result=0; if(Queens==8) return 1; else if(QueenPlace(LocX,LocY)) { Chessboard[LocX][LocY]='Q'; for(i=0;i<8;i++) for(j=0;j<8;j++) { Result+=N_Queens(i,j,Queens+1); if(Result>0) break; } if(Result>0) return 1; else { Chessboard[LocX][LocY]=' '; return 0; } } else return 0; } int QueenPlace(int LocX,int LocY) { int i,j; if(Chessboard[LocX][LocY]!=' ') return 0; for(j=LocY-1;j>=0;j--) if(Chessboard[LocX][j]!=' ') return 0; for(j=LocY+1;j<8;j++) if(Chessboard[LocX][j]!=' ') return 0; for(i=LocX-1;i>=0;i--) if(Chessboard[i][LocY]!=' ') return 0; for(i=LocX+1;i<8;i++) if(Chessboard[i][LocY]!=' ') return 0; i=LocX-1; j=LocY-1; while(i>=0 && j>=0) if(Chessboard[i--][j--]!=' ') return 0; i=LocX+1; j=LocY-1; while(i<8 && j>=0) if(Chessboard[i++][j--]!=' ') return 0; i=LocX-1; j=LocY+1; while(i>=0 && j<8) if(Chessboard[i--][j++]!=' ') return 0; i=LocX+1; j=LocY+1; while(i<8 && j<8) if(Chessboard[i++][j++]!=' ') return 0; return 1; } void main() { int i,j; for(i=0;i<8;i++) for(j=0;j<8;j++) Chessboard[i][j]=' '; N_Queens(0,0,0); printf("the graph of 8 Queens on the chessboard.\n"); printf(" 0 1 2 3 4 5 6 7\n"); printf(" +---+---+---+---+---+---+---+---+\n"); for(i=0;i<8;i++) { printf(" %d |",i); for(j=0;j<8;j++) printf(" %c |",Chessboard[i][j]); printf("\n +---+---+---+---+---+---+---+---+\n"); } }
书搞进脑袋 创新 创造; 积极