【源码】数独游戏
tc简单开发吧
全部回复
仅看楼主
level 12
题目沿用按键精灵贴吧题目
https://tieba.baidu.com/p/7805388332解题思路,源码中注释很详细,跟着逻辑走很容易理解。
解题源码:
var num=array()
function start_click()
//分配结构体数组大小
for(var i = 1; i <= 9; i++)
num[i]=array()
for(var j = 1; j <= 9; j++)
num[i][j]=0
end
end
//录入数独题目
var ti="005040030,842000090,000960054,000604800,603000709,004307000,420031000,050000361,090070400"
var sp=array()
strsplit(ti,",",sp)
for(var i = 0; i < arraysize(sp); i++)
for(var j = 1; j <= 9; j++)
num[i+1][j]=cint(strsub(sp[i],j-1,j))
end
end
//开始解题
var do=true
while(do)
do=false
for(var i = 1; i <= 9; i++)
for(var j = 1; j <= 9; j++)
if(num[i][j]==0)
do=true
Check(i,j)
end
end
end
end
//显示答案
var answer=""
for(var i = 1; i <= 9; i++)
for(var j = 1; j <= 9; j++)
answer=answer&num[i][j]&" "
end
answer=answer&"\r\n"
end
messagebox(answer,"答案")
end
function Check(row,column)
var oo="123456789"
//校验行和列
for(var i = 1; i <= 9; i++)
oo=strreplace(oo,num[i][column],"")
oo=strreplace(oo,num[row][i],"")
end
//校验九宫
var row0=int((row-1)/3)*3
var column0=int((column-1)/3)*3
for(var i = row0+1; i <= row0
+3
; i++)
for(var j = column0+1; j <= column0+3; j++)
oo=strreplace(oo,num[i][j],"")
end
end
//校验结果唯一,写入值
if(strlen(oo)==1)
num[row][column]=cint(oo)
end
end
function exit_click()
exit()
end
文字代码仅供复制使用,不便于浏览,下面是代码图片,方便浏览
2022年04月21日 08点04分 1
1