资源简介
用Matlab的整数规划函数求解数独,程序只有20行。
代码片段和文件信息
% 初速状态,0表示没填的格子
S = [ 740080016
900035004
000700000
070009500
610050087
002600040
000004000
300560002
560010039];
% 定义0、1数组 A(i j k) = 1,如果方格(i j)里的数为k;否则为0。
% sudoku问题即求一定假设条件下的解。
p = 3;
A = binvar(p^2p^2p^2‘full‘);
% 以下为限制条件
F = [sum(A1) == 1]; % 限制每行每个数恰好一个
F = [F sum(A2) == 1]; % 限制每列每个数恰好一个
F = [F sum(A3) == 1]; % 限制每个单元格子里恰好一个数
for m = 1:p
for n = 1:p
for k = 1:p^2
s = sum(sum(A((m-1)*p+(1:p)(n-1)*p+(1:p)k)));
F = [F s == 1]; % 限制每个3×3的方框里每个数恰好出现一次
end
end
end
for i = 1:p^2
for j = 1:p^2
if S(ij)
F = [F A(ijS(ij)) == 1]; % 初始给定的数要一直
end
end
end
% 直接求解
sol = solvesdp(F);
Z = 0;
for i = 1:p^2
Z = Z + i*double(A(::i)); % 简单相加即可
end
Z % 输出结果
相关资源
- MATLAB免疫遗传算法,在物流中心选址
- 形状上下文 代码 MATLAB
- 彩色遥感图像分类算法及 Matlab实现
- GMM Libraries for Matlab
- MATLAB迭代法计算信道容量
- PLA简单matlab实现
- 电流滞环整流matlab仿真模型
- 有源电力滤波器matlab仿真模型
- MATLAB ask psk fsk dpsk调制解调
- MATLAB仿真6个用户的CDMA的同步通信
- MATLAB单双目标定工具箱
- 分数阶PID的matlab工具箱
- T-S模糊辨识与广义预测控制MATLAB源程
- BP算法的改进在Matlab的实现研究
- 人脸识别系统 现成的matlab代码
- svpwm的matlab仿真227144
- 基于DWT的数字水印算法的MatLab实现
- yalmip 工具包
- 量子聚类算法matlab实现
- harris特征点提取,matlab
- 两阶段单纯形法的Matlab实现
- 一种实时坏点检测和修复算法的matl
- 图像边界提取与处理matlab的实现
- 提升小波变换的matlab程序
- Matlab编写的DPIV速度场程序
- 基本鱼群算法 MATLAB函数
- 遗传算法之一元函数求最值matlab
- A*算法航迹规划
- 信道容量的仿真代码
- MATLAB RGB和YUV格式相互转化
评论
共有 条评论