生成随机数独矩阵的算法的算法是?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 13:56:40
生成随机数独矩阵的算法的算法是?
求随机生成10000个数独矩阵的算法.
求随机生成10000个数独矩阵的算法.
可以采用dlx加上随机和成初始数独,同学我觉得你的分太少了,能加点吗
我在写程序马上写好给你
#include "stdlib.h"
#include "time.h"
#include
#include
const int MAX=10;
const int MAXM=81*4;
const int MAXN=81*9;
int CS=1;
char s[MAX*MAX];
int table[MAX*MAX][MAX][MAX];
struct
{
int l,r,u,d,sum,x,y;
}node[MAX*MAX*MAX*MAX*MAX];
inline void move(int c)
{
int i,j;
node[node[c].l].r=node[c].r;
node[node[c].r].l=node[c].l;
for(i=node[c].d;i!=c;i=node[i].d)
{
for(j=node[i].r;j!=i;j=node[j].r)
{
node[node[j].y].sum--;
node[node[j].u].d=node[j].d;
node[node[j].d].u=node[j].u;
}
}
}//move
inline void sume(int c)
{
int i,j;
for(i=node[c].u;i!=c;i=node[i].u)
{
for(j=node[i].l;j!=i;j=node[j].l)
{
node[node[j].y].sum++;
node[node[j].u].d=j;
node[node[j].d].u=j;
}
}
node[node[c].l].r=c;
node[node[c].r].l=c;
}//sume
bool DFS(int deep)
{
int i,col,min=MAXN*MAXM,x,y,j;
if(node[0].r==0)
{
return 1;
}
for(i=node[0].r;i;i=node[i].r)
{
if(node[i].sum
我在写程序马上写好给你
#include "stdlib.h"
#include "time.h"
#include
#include
const int MAX=10;
const int MAXM=81*4;
const int MAXN=81*9;
int CS=1;
char s[MAX*MAX];
int table[MAX*MAX][MAX][MAX];
struct
{
int l,r,u,d,sum,x,y;
}node[MAX*MAX*MAX*MAX*MAX];
inline void move(int c)
{
int i,j;
node[node[c].l].r=node[c].r;
node[node[c].r].l=node[c].l;
for(i=node[c].d;i!=c;i=node[i].d)
{
for(j=node[i].r;j!=i;j=node[j].r)
{
node[node[j].y].sum--;
node[node[j].u].d=node[j].d;
node[node[j].d].u=node[j].u;
}
}
}//move
inline void sume(int c)
{
int i,j;
for(i=node[c].u;i!=c;i=node[i].u)
{
for(j=node[i].l;j!=i;j=node[j].l)
{
node[node[j].y].sum++;
node[node[j].u].d=j;
node[node[j].d].u=j;
}
}
node[node[c].l].r=c;
node[node[c].r].l=c;
}//sume
bool DFS(int deep)
{
int i,col,min=MAXN*MAXM,x,y,j;
if(node[0].r==0)
{
return 1;
}
for(i=node[0].r;i;i=node[i].r)
{
if(node[i].sum