社区
数据结构与算法
帖子详情
请教高手填数字游戏算法
zhongsuquan
2009-07-08 09:35:30
由于不好画格子,只好用下面矩阵表示。假如下面是5行5列的格子,每个格子里面的数字只能是1或0,可以求得每行每列的数字和。但是反过来能否由已知的每行每列之和求出各格子里面的数字(X表示未知处)?此解是唯一的吗?请高手给出算法步骤,谢谢!!
(行之和)
1 X X X X 3
X X X X X 2
X 0 X X 0 1
X 1 X 0 X 1
1 0 X X 0 3
2 1 3 3 1 (列之和)
...全文
128
27
打赏
收藏
请教高手填数字游戏算法
由于不好画格子,只好用下面矩阵表示。假如下面是5行5列的格子,每个格子里面的数字只能是1或0,可以求得每行每列的数字和。但是反过来能否由已知的每行每列之和求出各格子里面的数字(X表示未知处)?此解是唯一的吗?请高手给出算法步骤,谢谢!! (行之和) 1XXXX3 XXXXX2 X0XX01 X1X0X1 10XX03 21331 (列之和)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
核动力蜗牛Killua
2009-07-16
打赏
举报
回复
线性代数的知识,可以去看看...有关方程的解和矩阵的关系
zhongsuquan
2009-07-15
打赏
举报
回复
确实不错![Quote=引用 21 楼 litaoye 的回复:]
如果已经放了,应该是放到排在后面的列里。以 为例
0111:3
1000:1
1000:1
1000:1
----
3111
先按照行排,3最大,共3个,依次放到排在前3的列中,1110
剩下的行中最大的为1,此时,对应的列的值为2001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为1001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为0001,放到1里,
0001
=>
1110
1000
1000
0001
…
[/Quote]
showjim
2009-07-13
打赏
举报
回复
[Quote=引用 21 楼 litaoye 的回复:]
如果已经放了,应该是放到排在后面的列里。以 为例
0111:3
1000:1
1000:1
1000:1
----
3111
先按照行排,3最大,共3个,依次放到排在前3的列中,1110
剩下的行中最大的为1,此时,对应的列的值为2001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为1001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为0001,放到1里,
0001
=>
1110
1000
1000
0001
…
[/Quote]
顶,确实是好办法,上面误解你的意思了.
绿色夹克衫
2009-07-13
打赏
举报
回复
如果已经放了,应该是放到排在后面的列里。以 为例
0111:3
1000:1
1000:1
1000:1
----
3111
先按照行排,3最大,共3个,依次放到排在前3的列中,1110
剩下的行中最大的为1,此时,对应的列的值为2001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为1001,先放到2里,
1000
剩下的行中最大的为1,此时,对应的列的值为0001,放到1里,
0001
=>
1110
1000
1000
0001
可以用优先队列来做
[Quote=引用 19 楼 sbwwkmyd 的回复:]
引用 17 楼 litaoye 的回复:
先将1放到行之和最大的那一行,同时又是列之和最大的那一列,依次往下放就可以,用这个方法也可以比较快的得出一个无解的判断。
0111:3
1000:1
1000:1
1000:1
----
3111
比如这种情况,我认为会存在难以确认的时候,比如最大行最大列相交处已经放了一个1怎么办?这种方法,大数会慢慢接近小数,当有多个数相等时怎么办?我认为用这种方法要确认是否有解是一定困难的.
引用 18 楼 sbwwkmyd 的回复…
[/Quote]
绿色夹克衫
2009-07-13
打赏
举报
回复
确实会有这样的情况,而且例子应该很多,就好像a+b+c+d+e >= 5,a,b,c,d,e 都 <= 1
这样的线性不等式竟然有唯一解,即a=b=c=d=e=1
解的区间依赖于约束的松或紧,用贪心来解,相当于尽量放低对解的约束,因此可以相对较快的求出一个解,
但同样存在只有一个解,甚至无解的情况。
[Quote=引用 18 楼 sbwwkmyd 的回复:]
引用 17 楼 litaoye 的回复:
约束条件为2*n个,变量有n^2个,n > 1时,解肯定不唯一,这种情况下,求1个解的话,用贪心就可以,
先将1放到行之和最大的那一行,同时又是列之和最大的那一列,依次往下放就可以,用这个方法也可以比较快的得出一个无解的判断。
另外还有些快速进行无解判断的方法,比如和不能>n,且列之和等于行之和。
有一点点不同意,解重复不知道算不算唯一?比如:
000
110
000
这样的结果.解唯一的情况…
[/Quote]
showjim
2009-07-13
打赏
举报
回复
[Quote=引用 17 楼 litaoye 的回复:]
先将1放到行之和最大的那一行,同时又是列之和最大的那一列,依次往下放就可以,用这个方法也可以比较快的得出一个无解的判断。
[/Quote]
0111:3
1000:1
1000:1
1000:1
----
3111
比如这种情况,我认为会存在难以确认的时候,比如最大行最大列相交处已经放了一个1怎么办?这种方法,大数会慢慢接近小数,当有多个数相等时怎么办?我认为用这种方法要确认是否有解是一定困难的.
[Quote=引用 18 楼 sbwwkmyd 的回复:]
解唯一的情况应该是任意两行无法或两列无法进行等和的10互换,简单一点就是不能出现
0...1
.....
1...0
或
1...0
.....
0...1
这样的双对角模型.
[/Quote]
如果只要求一个解,我会抓住这个特征,让我的搜索序列中只出现
01
10
这种结构,而
10
01这种结构是被排斥的,因为它们可以相互转换.
showjim
2009-07-13
打赏
举报
回复
[Quote=引用 17 楼 litaoye 的回复:]
约束条件为2*n个,变量有n^2个,n > 1时,解肯定不唯一,这种情况下,求1个解的话,用贪心就可以,
先将1放到行之和最大的那一行,同时又是列之和最大的那一列,依次往下放就可以,用这个方法也可以比较快的得出一个无解的判断。
另外还有些快速进行无解判断的方法,比如和不能>n,且列之和等于行之和。
[/Quote]
有一点点不同意,解重复不知道算不算唯一?比如:
000
110
000
这样的结果.解唯一的情况应该是任意两行无法或两列无法进行等和的10互换,简单一点就是不能出现
0...1
.....
1...0
或
1...0
.....
0...1
这样的双对角模型.
df274119386
2009-07-13
打赏
举报
回复
学习
绿色夹克衫
2009-07-13
打赏
举报
回复
约束条件为2*n个,变量有n^2个,n > 1时,解肯定不唯一,这种情况下,求1个解的话,用贪心就可以,
先将1放到行之和最大的那一行,同时又是列之和最大的那一列,依次往下放就可以,用这个方法也可以比较快的得出一个无解的判断。
另外还有些快速进行无解判断的方法,比如和不能>n,且列之和等于行之和。
lvjaio5241
2009-07-13
打赏
举报
回复
学习一下
仗剑逗二哈
2009-07-13
打赏
举报
回复
头疼
jlp999
2009-07-13
打赏
举报
回复
我理解的题意:
这不就是Windows自带的小游戏“扫雷”的简单版本么
fjcqv
2009-07-12
打赏
举报
回复
好像是数字图像处理中的投影
zhongsuquan
2009-07-12
打赏
举报
回复
up
zhongsuquan
2009-07-11
打赏
举报
回复
up
ToBeTough
2009-07-10
打赏
举报
回复
up
fztjava
2009-07-10
打赏
举报
回复
1 0 0 1 1
0 0 1 1 0
0 0 1 0 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 0 1
0 0 1 1 0
0 0 0 1 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 1 0
0 0 0 1 1
0 0 1 0 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 1 0
0 0 1 0 1
0 0 0 1 0
0 1 0 0 0
1 0 1 1 0
zhongsuquan
2009-07-10
打赏
举报
回复
顶起
zhongsuquan
2009-07-09
打赏
举报
回复
7楼的大哥说的非常对。我也留意到了这些问题,就是想不出好的方法来求解,特别是当矩阵较大的时候[Quote=引用 7 楼 matrixcl 的回复:]
这个题目有4组解,右上角那个3×3方阵的8个数字是可以变的。
1 0 0 1 1
0 0 1 1 0
0 0 1 0 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 0 1
0 0 1 1 0
0 0 0 1 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 1 0
0 0 0 1 1
0 0 1 0 0
0 1 0 0 0
1 0 1 1 0
----------
1 0 1 1 0
0 0 1 0 1
0 0 0 1 0
0 1 0 0 0
1 0 1 1 0
6楼的方法可行,但效率不高,如果5×5方阵这个边长扩大点,计算…
[/Quote]
zhongsuquan
2009-07-09
打赏
举报
回复
[Quote=引用 4 楼 xxjjs 的回复:]
很简单啊,列N元一次方程啊
N*M矩阵,可以列N+M个方程,初中生就知道,如果未知数大约N+M,方程解不唯一
[/Quote]
兄弟能详细点吗?如何列?
加载更多回复(7)
请教
语音识别的问题
高手
进-hello.rar
请教
语音识别的问题
高手
进-hello.rar 我想请问如果我自己录了一段音,想去除其中机械噪声那一部分,应该如何用傅里叶变换处理呢。请
高手
指导matlab的实现方式,小弟不甚感激!
FFMPEG视音频编解码零基础学习方法
FFMPEG视音频编解码零基础学习方法 FFMPEG视音频编解码零基础学习方法
有哪些手段可以优化快速排序
算法
周五的下午面试了一位来自华为的
高手
,此
高手
称精通排序
算法
。我一听说某人精通某项,就忍不住兴奋,喜欢抓住别人最精通的这一项追根究底。一方面来说,问你最精通的东西,不能算考官故意刁难你;另一方面来说,面试别人往往成为自己变相
请教
高手
的途径。 问之:相对于《数据结构》课本上提供的快速排序
算法
,有没有可以优化的余地? 本来我的原意是想听到他说将递归
算法
修改为非递归
算法
,可是聊了一些方面也
matlab根据数值大小聚类,[matlab聚类分析]
请教
高手
:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?...
请教
高手
:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?问题补充:
请教
高手
:用matlab做聚类分析,节点数多于30个怎么画聚类图啊?十分感谢。●x=[数据]; %n行p列(n不宜大于80,否则系统聚类的线条密集,不易区分)x=pdist(x); %计算成对比较的(欧氏)距离z=linkage(y,'average'); % 用类平均法('average')和/或最小组内平方和法(‘w...
如何学好数据结构与
算法
各说各的,讲
算法
设计时就假设你已经对数据结构了如指掌,还没有哪一本
算法
书很好的解决这两个困难,传统的
算法
书,大多注重内容的收录,但却忽视思维过程的展示,因此我们学习了经典的
算法
,却费解于
算法
设计的过程。遇到一个实际问题,通过问题分析,选择使用什么样的
算法
策略,基于这种
算法
策略选择什么样的数据结构,有时
算法
策略和数据结构的选择并不是唯一的,不同的
算法
策略和数据结构设计的
算法
,其复杂性是不同的。
算法
实现可以用任何语言,所以不必纠结是C,C++,Java,Python,更不必管严格的语法规则,除非你要上机调试。
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章