資源簡介
此程序使用的是Matlab語言對數獨經行求解詳細過程,程序注解詳盡,在玩游戲中學習編程快樂

代碼片段和文件信息
%%2017/11/12?by?DengQi(DQ)
%本程序是按照數獨基本規則對每個位置可能候選數進行篩選,主要是在行列塊上做交集
%進行上述篩選后的候選數只有少數幾個數了,因此后續操作就簡化了很多
function?[PossibleDataPossibleDataNum]?=?baseRule(Data)
[mn]=size(Data);
baseNumber=1:9;
PossibleData=cell(mn);
PossibleDataNum=zeros(mn);
for?i=1:m
????for?j=1:n
????????%原先有數的地方就不需對其操作
????????if?Data(ij)==0
????????????%先沿著x方向
????????????RowData={setdiff(baseNumberData(i:))};
????????????%再沿著y方向
????????????ColumnData={setdiff(baseNumberData(:j))};
????????????%在3x3小塊中
????????????BlockX=?(1+3*floor((i-1)/3)):(3+3*floor((i-1)/3));
????????????BlockY=?(1+3*floor((j-1)/3)):(3+3*floor((j-1)/3));
????????????BlockData={setdiff(baseNumberData(BlockXBlockY))};
????????????%求取三個方向數據的交集
????????????Temp1=intersect(RowData{:}ColumnData{:});
????????????Temp2=intersect(Temp1BlockData{:});
????????????PossibleData(ij)={Temp2};
????????????PossibleDataNum(ij)=length(Temp2);
????????end
????end
end
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1065??2018-01-14?19:44??SudouMatlabTest\ba
?????文件???????1518??2018-01-14?21:00??SudouMatlabTest\ExcludeRow_Col_BlockSame.m
?????文件???????4275??2018-01-14?20:55??SudouMatlabTest\Row_Col_Block_DataTwoSame.m
?????文件???????3766??2018-01-14?20:23??SudouMatlabTest\Row_Col_Block_DataUnique.m
?????文件???????8630??2017-03-22?21:26??SudouMatlabTest\Sudou1.xlsx
?????文件???????8595??2017-03-22?21:26??SudouMatlabTest\SudouD.xlsx
?????文件????????644??2018-01-14?21:19??SudouMatlabTest\SudouDemo.m
?????文件??????22528??2018-01-13?18:35??SudouMatlabTest\SudouM1.xls
?????目錄??????????0??2018-01-14?22:40??SudouMatlabTest
-----------?---------??----------?-----??----
????????????????51021????????????????????9
評論
共有 條評論