我的code 这么经典...
难道能看懂的就只那么几个人...
难道能看懂的就只那么几个人...
生命不熄,战斗不止.
/////////////////////////////////////////////////////////////////// // C脚本编译编译器测试程序 exp3.sc // // 该例子使用递归算法计算八皇后问题,该例子显示信息比较长, // 在Win2000下会超出显示允许长度,可以使用以下命令重定向到 // 一个文本文件中再查看: // scvm exp3.so >> exp3.txt // // 作者:何清 // 日期:2003-07-04 // /////////////////////////////////////////////////////////////////// int result = 1; int chess[8]; // 根据前面几行的子,检查这一行所放的子是否合法 int check( int n ) { int i; for (i = 1; i <= n - 1; i++) { if (chess[n] == chess[i] + (n - i) || chess[n] == chess[i] - (n - i) || chess[n] == chess[i] ) return 0; } return 1; } // 递归函数:放子 void putchess( int n ) { int i; if (n <= 8) { for (i = 1; i <= 8; i++) // 将第n行从第一格(i)开始往下放 { chess[n] = i; if (check(n) == 1) // 若可放,则检查是否放满 { if (n == 8) show_chess(); // 若已放满到8行时,则表示找出一种解,打印出来 else putchess(n + 1); // 若没放满则放下一行 putchess(n+1) } } } } // 函数:打印结果 void show_chess(void) { int i; printf("Result - %d\n", result); for (i = 1; i <= 8; i++) { printf("(%d): %d\n", i, chess[i]); } ++result; } // 主程序 int main() { printf("This is for 8 X 8 matrix.\n"); putchess(1); // 从每一行开始放子 return 0; }