八皇后問題

2021-08-14 22:06:46 字數 2107 閱讀 4622

#include#includeint count = 0;

int nodanger(int row, int i, int (*chess1)[8])

} //判斷左上方向

for (k = row, j = i; k >= 0 && j >= 0; k--, j--) }

//判斷右下方

for (k = row, j = i; k < 8 && j < 8; k++, j++) }

//判斷右上方

for (k = row, j = i; k >= 0 && j <8; k--, j++) }

//判斷左下方

for (k = row, j = i; k < 8 && j >=0; k++, j--) }

if ( flag1 || flag2 || flag3 || flag4 || flag5)

return 0;

else

return 1;

}//row: 當前是第幾行

//cols一共有多少列

//chess棋盤陣列

void eightqueen(int row, int cols, int (*chess)[8]) }

//最小情況

if (row == 8)

printf("\n");

} printf("\n");

} else//一般情況

chess1[row][i] = 1;

eightqueen(row + 1, cols, chess1);

}} }

}int main(void)

} eightqueen(0, 8, chess);

system("pause");

return 0;

}//#include //

//int count = 0;

////int notdanger(int row, int j, int(*chess)[8])

//// }

//// // 判斷左上方

// for (i = row, k = j; i >= 0 && k >= 0; i--, k--)

// // }

//// // 判斷右下方

// for (i = row, k = j; i<8 && k<8; i++, k++)

// // }

//// // 判斷右上方

// for (i = row, k = j; i >= 0 && k<8; i--, k++)

// // }

//// // 判斷左下方

// for (i = row, k = j; i<8 && k >= 0; i++, k--)

// // }

//// if (flag1 || flag2 || flag3 || flag4 || flag5)

// // else

// //}

// 引數row: 表示起始行

引數n: 表示列數

引數(*chess)[8]: 表示指向棋盤每一行的指標

//void eightqueen(int row, int n, int(*chess)[8])

//// }

//// if (8 == row)

// // printf("\n");

// }

// printf("\n");

// count++;

// }

// else

// //

// *(*(chess2 + row) + j) = 1;

//// eightqueen(row + 1, n, chess2);

// }

// }

// }

//}//

//int main()

//// }

//// eightqueen(0, 8, chess);

//// printf("總共有 %d 種解決方法!\n\n", count);

// system("pause");

// return 0;

//}

八皇后問題

八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...

八皇后問題

include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...

八皇后問題

package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...