数独(一)
Github地址: https://github.com/cfafa2018/SudokuProject 思路: 根据题目要求,摘取出一些需要解决的问题,差不多也就是整体的解题思路。 代码分成了两大块,生成数独和解数独部分,还有一些小的函数。 (1)命令行中使用 -c和-s,识别并根据命令生成或读取相应的文件。 用ofstream和C语言里面的fopen。对于-c和-s以及一些错误的输入,例如:-c ab 进行处理,提示 Wrong input。利用main函数里的argc和argv两个参数解决。 (2)生成数独。 根据要求,数独左上角的第一个数应该为 (0 + 8)% 9 + 1 = 9,后面8个位置用剩下的8个数进行全排列。然后下面的8行可以分别通过第一行右移得到。(借鉴了同学的思路)这里采用C++实现。 1 if (AllisNum(argv[ 2 ])){ 2 int shudu[ 9 ][ 9 ]={ 0 },arr[]={ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 }; 3 shudu[ 0 ][ 0 ] = 9 ; // 数独第一个数字为9 4 for ( int i = 0 ; i < atoi(argv[ 2 ]); i ++ ){ 5 next_permutation(arr, arr+ 8 ); 6 for ( int j =