佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2571|回复: 8

用JAVA来写4x4的数独。。。

[复制链接]
发表于 21-7-2007 05:36 PM | 显示全部楼层 |阅读模式
我是初学者,想要用java来写一个4x4的数独游戏,我做了interface,但是不懂怎样random generate number在random的row and column,而且是可以solve到的。。。有没有高手可以帮帮下。。。
回复

使用道具 举报


ADVERTISEMENT

发表于 22-7-2007 02:16 PM | 显示全部楼层
请问你有学过 hill climbing, simulated annealing之类的东西吗?

[ 本帖最后由 tensaix2j 于 22-7-2007 02:21 PM 编辑 ]
回复

使用道具 举报

发表于 22-7-2007 11:51 PM | 显示全部楼层
你可以先用一个基本答案,然后 一行行换位,再一列列换位,
再根据难度把一些数字拿掉,就行了。
回复

使用道具 举报

 楼主| 发表于 24-7-2007 08:55 PM | 显示全部楼层
原帖由 flashang 于 22-7-2007 11:51 PM 发表
你可以先用一个基本答案,然后 一行行换位,再一列列换位,
再根据难度把一些数字拿掉,就行了。


谢谢你,提示,我做到了。。。
回复

使用道具 举报

 楼主| 发表于 24-7-2007 08:56 PM | 显示全部楼层
原帖由 tensaix2j 于 22-7-2007 02:16 PM 发表
请问你有学过 hill climbing, simulated annealing之类的东西吗?


还没学瓜,不懂什么来的哦。。。
回复

使用道具 举报

发表于 25-7-2007 10:19 AM | 显示全部楼层
这是我很乱的写法。。可以参考。。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define num 9
int ite( void (*fu)(void),int *it,int max ){
        for (*it=0;*it<max;fu(),(*it)++);
                return 0;
}
int i,j,k,lpt,pt,msk,at,brd[num*num];
void fa(){
        (!(brd[i*num+j] || msk & (1<<j)))?
        lpt=j, (rand()&1)?        pt=1, brd[i*num+j]=k+1,
        msk |= (1<<j), j=num:0:0;
}
void fb(){
        lpt=-1,pt=0,ite(&fa,&j,num);
        (!pt && lpt>=0)?brd[i*num+lpt]=k+1,msk |= (1<<lpt):(lpt<0)?at++,k=-1,i=num:0;
}
void fc(){
        (!k)?memset(brd,0,sizeof(int)*num*num):0;msk=0; ite(&fb,&i,num);
}
void fd(){
        !(i%num)?puts(""):0;printf("%d",brd);
}
int main(){
                srand(time(NULL));
                at=0;
                ite(fc,&k,num);
                printf("attempted : %d",at);
                ite(fd,&i,num*num); //final result.
}

[ 本帖最后由 tensaix2j 于 5-8-2007 02:04 PM 编辑 ]
回复

使用道具 举报

Follow Us
发表于 29-7-2007 11:09 PM | 显示全部楼层
原帖由 tensaix2j 于 25-7-2007 10:19 AM 发表
这是我很乱的写法。。可以参考。。

#include
#include
#include
#define num 9
int ite( void (*fu)(void),int *it,int max ){
        for (*it=0;*it


的确是很乱的写法。。。
应该考虑加入注解,variable / function name 用一些比较有意思的。。。
还有空格空行。。。
回复

使用道具 举报

发表于 13-8-2007 09:03 AM | 显示全部楼层
我乱写的啦。。。哈哈。。纯属娱乐。。
回复

使用道具 举报


ADVERTISEMENT

发表于 18-8-2007 09:00 AM | 显示全部楼层
我写不出。。。没有数读的概念。。。不懂怎样做。。。怕放的号码解不出答案。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 15-9-2025 06:15 AM , Processed in 0.142822 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表