| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2251 人关注过本帖, 1 人收藏
标题:求代码 给你一个N×M的矩阵,你需要在矩阵的每个格子里填上0-K之间的整数, ...
只看楼主 加入收藏
bjjbcbk
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-11-19
结帖率:66.67%
收藏(1)
已结贴  问题点数:20 回复次数:3 
求代码 给你一个N×M的矩阵,你需要在矩阵的每个格子里填上0-K之间的整数,使得这个矩阵的每一行、每一列的和都等于初试给定的值。并且请求出该填法是否是唯一的,如
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 矩阵 等于 给定 请求 唯一 
2018-03-18 23:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:14 
感觉先分别找出每一行的其中一个解~
然后对比列的数相差多少来进行调整补充~

如果每一行有解,可以快速判断每一列的差值和是否为0表示有没有解如果差值不为0,则肯定没有解~
寻找其中一个解的方法是先在每个格上先填满1,然后逐个逐个更改为最大值可以找到其中一个解(当然也有看平均数是否大于K的判别方法可以一步到位)~

如果有可能有解就要看看怎么调整了~




[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-19 01:34
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
好像先对横和列要求得出的数字进行大小排序,然后在每个方格不断累加1每扫描整个矩阵一次累加1算一个循环~
直至某行或者某列符合要求~
然后就把那行或者那列的结果封存起来再进行计算~
模拟一下就是排序后这样会不断缩小矩阵,因为总是结果较小的先会被加满~
接下来很可能会遇到K值达到上限的情况~
这样就把结果进行回溯调整~
直至全部有解或者回溯结束,多个解也类似~

具体不知道可不可行,感觉算法工程量挺以及细节处理方面挺多的~




[此贴子已经被作者于2018-3-19 15:54编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-19 15:48
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
3楼方向可以,但走偏了~
其实排序后,不是从头到尾顺序填数,而是从最大的值开始填,大的方格优先填,这样可以保证矩阵填的数是递增的,不用再减回来调整~


其实简单思想还可以做减法,每个数初始化为给定的最大值,然后减去差,这样不断递减,如果两个结果都一样那就有唯一解,如果两个结果不一样那就不是唯一解,因为检索方向是反过来的,综合来说两种检索方法可以用同一个函数实现,整合的时候调用不同的参数就可以了~



[此贴子已经被作者于2018-3-20 09:19编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-03-20 08:48
快速回复:求代码 给你一个N×M的矩阵,你需要在矩阵的每个格子里填上0-K之间的整 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017282 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved