#include <stdio.h> #define LEN 8 //棋盘规模,长/宽 static int y[LEN]={0}; //每一行上,皇后列位置数组 //显示截的棋盘布局,皇后用Q表示,空位置用*表示 void Display(void) { static int num=0; printf("this is %d solution\n",num++); int i,j; for(i=0;i<LEN;i++){ for(j=0;j<LEN;j++){ if(j==y[i]) printf("Q "); else printf("* "); } printf("\n"); } } //测试位置(raw,vol) 能否放置 int Test(int raw, int vol) { int i; for(i=0;i<raw;i++) { //因为按行放置,所以行不会冲突,只需检测列,及正/斜对角线 if( vol==y[i] || vol==raw+(y[i]-i) || vol==-raw+(y[i]+i)) return 0; } return 1; } //放置第raw行的皇后 void Put(int raw) { if(raw == LEN) { Display(); return; } int i; for(i=0;i<LEN;i++) { if(Test(raw,i)) { y[raw]=i; Put(raw+1); } } } void Queen(void) { Put(0); } int main(void) { Queen(); int i; i=10; for(i=0;i<10;i++){ printf("hello\n"); } getchar(); return 0; }