数独生成:
#include"sudoku.h"
#include<time.h>
using namespace std;
char field[200000000];
void Sudoku::openfile(const char* name)
{
errno_t err;
err = fopen_s(&file1, name, "w+");
cout << "打开写文件sudoku.txt" << endl;
}
//生成数独终局
void Sudoku::createSudoku(int n)
{
openfile("sudoku.txt");
int trans[9] = { 0,3,6,1,4,7,5,2,8 };//每一行的移动情况
int flag = 0;//终局个数
int m = 0;
for (int i = 0; i < 6; i++)//4到6行的六种排列方式
{
if (flag >= n)
{
break;
}
if (i)
{
//交换4到6行
next_permutation(trans + 3, trans + 6); //全排列函数,输出所有比当前排列大的排列,顺序是从小到大。
trans[6] = 2, trans[7] = 5, trans[8] = 8;
}
for (int j = 0; j < 6; j++)//7到9行的六种排列方式
{
if (flag >= n)
break;
if (j)
//交换7到9行
next_permutation(trans + 6, trans + 9); //全排列函数
char row[10