matlab求解数独流程图,简单的数独游戏求解程序(matlab)

《简单的数独游戏求解程序(matlab)》由会员分享,可在线阅读,更多相关《简单的数独游戏求解程序(matlab)(2页珍藏版)》请在人人文库网上搜索。

1、function S=sudoku(A)%SUSOKU0 功能:求解数独%调用格式:S=sudoku(A)%A-需判断的数独矩阵(99),空格用0替代%S-数独的解%A=xlsread(sudoku.xls,A11:I19);k=1;s=1;A1=cell(9);C=cell(9);n0=0 %n02A_ti=A;%原始题目while 1d,p=find_variable(A);Cp(1),p(2)=d;n=length(d);if nn0n0=nendif n1k1(s)=9*(p(2)-1)+p(1);s=s+1;A1p(1),p(2)=A;elseif n=0s=s-1;if A(k1(。

2、s)=Ck1(s)(end)s=s-1;endk=k1(s);%breakA=A1k;A(k)=Ck(2);%目前为止没有超过2个可选元素的continueendA(p(1),p(2)=Cp(1),p(2)(1);k=k+1;if sum(sum(ceil(A/9)=81%判断是否填完了breakend%if sum(sum(ceil(A/9)=81% break%endendS=A%A=xlswrite(sudoku.xls,S,k11:S19);function D,P=find_variable(A)%Find_variable 功能:找出数独矩阵中可填值最少的位置及可填值%调用格式:D。

3、,P=find_variable(A)%S-需判断的数独矩阵(99),空处用0替代%D-可填的值%P-可填值最少的位置,P中第1个元素为所在行,第2个元素为所在列global CD=1:9;for k1=1:9for k2=1:9if A(k1,k2)=0 %跳过已给数值continueelsen1=ceil(k1/3);n2=ceil(k2/3);m=A(3*n1-2:3*n1,3*n2-2:3*n2);a=A(k1,:); %行b=A(:,k2); %列c=reshape(m,1,9); %宫d0=setdiff(1:9,union(union(a,b),c); %行列宫并集的补集,即可填数if length(d0)length(D) %选出元素最少的D=d0;P=k1,k2; %返回元素值及位置endendendend。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值