主题:一个大九宫格、含小九宫格的游戏
spray
[专家分:180] 发布于 2006-02-02 06:58:00
8
8 5 7 2 3
7 2 1 6 4
1 4 8 9
9 5 4
4 3 8 1
2 3 5 7 4
1 7 6 4 8
8
数字魔方的游戏规则:
1、在9×9的大九宫格内,已给定若干数字,其他宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字;
2、必须满足的条件:每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每行、每列及每个小九宫里只能出现一次。
回复列表 (共14个回复)
沙发
moz [专家分:37620] 发布于 2006-02-02 10:10:00
要说重新来做还方便点,这留白的可就是.....
板凳
moz [专家分:37620] 发布于 2006-02-02 10:13:00
123456789
456789123
789123456
234567891
567891234
891234567
345678912
678912345
912345678
3 楼
moz [专家分:37620] 发布于 2006-02-03 16:30:00
唉,烦死了烦死了,做男人真烦,一点信心都没有。
declare function sames$ (x1$, x2$, x3$, x4$)
declare function instchr% (y1$, y2$)
defint a-z
dim b$(2, 9), a$(2), l(81)
a$(0)=" 8 5723 7 21 6 4 1 4 89 9 5 4 43 8 1 2 3 57 4 1764 8 8 "
a$(1)=a$(0)
a$(2)=a$(0)
for i=1 to 81
i1=((i-1)mod 9)*9+(i-1)\9+1
i2=(((i-1)\27)*3+((i-1)mod 9)\3)*9+((i-1)\9 mod 3)*3+(i-1)mod 3+1
i0$ = mid$(a$(0), i, 1)
mid$(a$(1), i1, 1) = i0$
mid$(a$(2), i2, 1) = i0$
if i0$ = chr$(32) then
l(0) = l(0) + 1
l(l(0)) = i
end if
next
for i = 1 to 9
for j = 1 to 9
for k = 0 to 2
if instr(mid$(a$(k),i*9-8,9),chr$(48+j))=0 then b$(k,i)=b$(k,i)+chr$(48+j)
next k, j, i
c$ = space$(l(0))
for j = 1 to l(0)
i = l(j)
i0 = (i - 1) \ 9 + 1
i1 = (i - 1) mod 9 + 1
i2 = ((i - 1) \ 27) * 3 + ((i - 1) mod 9) \ 3 + 1
mid$(c$,j,1)=sames$(b$(0, i0), b$(1, i1), b$(2, i2), mid$(c$, j, 1))
if mid$(c$, j, 1) = chr$(32) then j = j - 2
next
cls
k = 0
for i = 1 to 81
d$ = mid$(a$(0), i, 1)
if d$ = chr$(32) then
k = k + 1
color 14, 0
print mid$(c$, k, 1); chr$(32);
else
color 7, 0
print d$; chr$(32);
end if
if i mod 9 = 0 then print
next
end
function instchr (y1$, y2$)
for i = 1 to len(y1$)
if y2$ < mid$(y1$, i, 1) then exit for
next
y1$ = left$(y1$, i - 1) + y2$ + mid$(y1$, i)
instchr = i
end function
function sames$ (x1$, x2$, x3$, x4$)
sames$ = chr$(32)
if x4$ <> chr$(32) then
i = instchr(x3$, x4$)
i = instchr(x2$, x4$)
i = instchr(x1$, x4$)
end if
for j1 = i + 1 to len(x1$)
k$ = mid$(x1$, j1, 1)
j2 = instr(x2$, k$)
j3 = instr(x3$, k$)
if j2 > 0 and j3 > 0 then
x1$ = left$(x1$, j1 - 1) + mid$(x1$, j1 + 1)
x2$ = left$(x2$, j2 - 1) + mid$(x2$, j2 + 1)
x3$ = left$(x3$, j3 - 1) + mid$(x3$, j3 + 1)
sames$ = k$
exit for
end if
next
end function
4 楼
moz [专家分:37620] 发布于 2006-03-06 15:53:00
我这一张贴居然没拿到一分?顶到评分为止。
5 楼
w1212q [专家分:660] 发布于 2006-12-04 11:52:00
眼中没有别人;
心里只有自己;
6 楼
moz [专家分:37620] 发布于 2006-12-04 13:06:00
如果说的不是我,那是我多情了,
如果说的真是我,那请你来做做.
7 楼
w1212q [专家分:660] 发布于 2006-12-05 12:23:00
九宫可以剃归;
可以用根|节点|终节点表示;
从根开始,沿节点搜索,遇目标返回;
再次搜索,遇目标返回;
直到搜索到终结点为止;
棋盘通常是用二维数组表示;
dim qiba(1 to 8,1 to 8)
这样表示效率很低;
dim qiba(1 to 64)
效率提高一点;
不过算起来费时;
dim qiba(1 to 90)
这样可以利用树的方式;
8 楼
老大徒伤悲 [专家分:29120] 发布于 2006-12-08 13:37:00
w1212q,好算法!
9 楼
moz [专家分:37620] 发布于 2006-12-08 15:49:00
嗯,好算法,高明.高超,利害,佩服,汗颜,自愧不如.
10 楼
mickeyice [专家分:200] 发布于 2007-01-02 16:57:00
呵呵 说到moz 的 什么什么上了~~~
数据结构。...... 我考试是过了,但是见了类似的题目第一反应还是穷举~~~~
穷举~穷举~穷举~穷举~穷举~穷举~ 好东西啊,以前小时候 连高数都不知道的时候就靠他了[em4][em4]
我来回复