数独游戏java代码 数独游戏编程( 三 )


* 这个规则是本算法的核心
* @param time 填充的次数,0代表第一次填充
* @return
*/
public static int generateNum(int time){
//第一次尝试时,初始化随机数字源数组
if(time == 0){
for(int i = 0;i9;i++){
num[i] = i + 1;
}
}
//第10次填充 , 表明该位置已经卡住,则返回0,由主程序处理退回
if(time == 9){
return 0;
}
//不是第一次填充
//生成随机数字,该数字是数组的下标,取数组num中该下标对应的数字为随机数字
int ranNum = (int)(Math.random() * (9 - time));
//把数字放置在数组倒数第time个位置,
int temp = num[8 - time];
num[8 - time] = num[ranNum];
num[ranNum] = temp;
//返回数字
return num[8 - time];
}
}
求破解九九宫格JAVA代码JAVA不熟,不过算法都差不多 。
等会给你个C/C++的 。
我用C++做出来了.
基本思路说下:
先定义类
class JiuGong
{
public:
int table[9][9];//这个是九宫里的数学 不知道的用0代替
bool mark[9][9];//这个表示九宫状态,true表示已知的,可以不计算的
int x;
int y;//x,y表示当前正在试验的点
JiuGong *pre;//这是后面堆栈用的
bool check();//这函数进行九宫检查,包括行/列/小九宫的查错
bool finish();//这函数检查是否已经完成
bool find();//这函数用来找到下一个未知点(试验点)位置
}
再定义一个类 这是个堆栈
class JiuGongStack()
{
public:
JiuGong *top;
bool push(JiuGong *p);//压
bool pop(JiuGong *p);//弹
}
推算过程:
先声明一个JiuGong结构,导入初始值.
【数独游戏java代码 数独游戏编程】用成员函数find()找到第一个未知点.
以下循环:
{
在试验点数字加1
用成员函数finish()检查是否结束
Y- 成功 返回
N- 向下
检查数字9
Y-POP -POP失败 -题目错误 返回
N-向下
用成员函数check()查错
无错-PUSH
错-继续循环
}
完毕.
数独设计思路及全解开始的话数独游戏java代码:这个程序现在还不稳定数独游戏java代码,有时出现运行时错误,跟踪是由于vector的size()方法引起的 。调试发现中间的min_seq并没有完全按照作者的意图变化 。
运行时 , 如果出现错误,就反复运行,运行成功即可出现一个正确的9*9数独矩阵 。
如果要玩预先填充一些数的游戏 , 只需修改初始矩阵即可 。
算法:为每个位置定义一个可选元素集合,每个更新是把它所在的行,列,所在的3×3方阵中已出现的元素从集合中去掉 。填充时,从最小候选集合中选一个(可随即)填进去 , 更新候选集合,再填充,直到所有位置填充完毕 , 游戏结束 。
/*******9×9数独游戏的计算机程序*******/
/*******作者:xiaocui******************/
/*******时间:2006.6.23****************/
/*******版本:v1.0*********************/
/*******算法思想***********************/
/******对每个位置的元素,考虑其可选取的数字
的集合,每次把候选元素个数最小的那个位置填充
从该最小候选集合中随机选取一个元素填充,重复
这个过程,直到所有元素填充完毕************/
/****适用填充全空的数独方格和 填充已有一些数的数独方格*****/
/****对初始化的候选集的第一次更新正是为了解决第2类数独游戏***/
/****对于已填充一部分元素的,直接修改MATRIX矩阵即可*****/
/****数独游戏的结果不止一种********/
#include iostream

推荐阅读