1到9填在9个格子中,让横竖斜的3个数相加都相等

方法一:

算法简析:

为什么和一定是15呢?

设第一行 的和为X;第二行的和为X;第三行的和为X。

3X=1+2+3+..+9=45你等于是把这九个数都加了一遍。

可知:X=15再确定最中心的数是5.


设S=横着加第二行(中心行)+竖着加第二列(中心列)+斜着加两次(X)。

你发现中心数加了4次,其他的都加了一次。(中心数多加了3次)

S=4X=4*15=60=1+2+3+..+9+中心数*3

中心数=5


四个角不可能是奇数 。否则:斜着加会出问题

因为:假如左上是奇数,奇+5+右下数=15 右下必为奇数

此时: 假如右上为奇数,则左下必为奇数,最终 全部是奇数, 

 假如右上为偶数,则左下必为偶数,最终剩下的空格全是偶数。

共6个偶数,但偶数只有 2 4 6 8 四个 不够哦。


所以四个角 不可能是奇数。然后四个角代入2 4 6 8,自己凑吧。


方法二:

解以上不定方程式


设排列为

ABC

DEF

GHI

A+B+C=15

D+E+F=15

G+H+I=15

A+D+G=15

B+E+F=15

C+F+I=15

A+E+I=15

C+E+G=15

解以上不定方程式,就可以算出来

实际上,这是数独最古老的一种叫做河图,传说是从河里出来的龟身上的图案,具体你可以学习中国传统的文化部分.

数独的一般解法就是试验加经验

本题的记忆方法是偶角奇边坐心五.一线双角相对画.

在MATLAB中,你可以使用循环和随机数生成来实现这个目标,确保每个数1-15至少出现一次并均匀分布在26个格子中。这里是一个简单的步骤: 1. 首先,创建一个26行1列的矩阵`grid`,代表26个格子。 ```matlab grid = zeros(1, 26); ``` 2. 创建一个包含1-15的向量`numbers`。 ```matlab numbers = 1:15; ``` 3. 使用`randperm`函数将`numbers`随机排列,并保证每个数只出现一次。`num_unique_cells`计算出需要填入的唯一数字的数量。 ```matlab unique_nums = unique(numbers); num_unique_cells = numel(unique_nums); ``` 4. 如果`num_unique_cells`大于26,说明无法满足条件,因为有超过26个唯一的数字。在这种情况下,可以添加一些额外的随机数来平衡,但在这个例子中我们假设26个格子足够分配所有的独特数字。 5. 接下来,用随机排列后的`unique_nums`充`grid`。 ```matlab for i = 1:num_unique_cells grid(i) = unique_nums(i); end ``` 6. 最后,如果还有剩余的格子(即`length(unique_nums) < 26`),可以用剩余的格子随机选择其他数字,但请注意这可能会破坏“每个数字至少出现一次”的规则。如果你希望保持这个规则,可以选择跳过这部分或者简单地忽略多余的格子。 ```matlab if num_unique_cells < 26 remaining_cells = 26 - num_unique_cells; extra_numbers = randperm(max(numbers) + 1, remaining_cells); % 可能需要修改max(numbers) for i = 1:length(extra_numbers) grid(length(unique_nums) + i) = extra_numbers(i); end end ``` 现在,`grid`矩阵应该包含了1-15数字至少出现一次,并尽可能均匀分布。注意,由于随机性,每次运行上述代码可能会得到不同的结果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值