algorithm - 用 1 和 0 填充 n*n 数组
问题描述
因此,考虑到每行和列中的元素数量,我尝试用 1 和 0 填充数组。例如,如果我被给予
int 行 = {2, 2, 2, 3};
int 列 = { 3, 2, 1, 3};
那么一个可能的解决方案是
1 0 0 1
1 1 0 0
0 0 1 1
1 1 0 1
其次,是否存在任何组合,即使两个数组(列和行)的总和相等,也无法获得有效的解决方案。就我而言,它应该是有效的,因为 3+2+1+3=2+2+2+3 但是是否存在两个总和相等但仍然不存在稳定组合的情况。
解决方案
我找到的答案是一种贪婪的方法,其中回答每个子问题。所以我逐列并根据行的权重填写每一列。
记住索引从 0
开始我从第 0 列开始,
因为第 3 行具有最高值 (3) 我填充它
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
现在行列数组如下
row = {2,2,2,2}
column = {2,2,1,3}
我继续填充,直到我不能再插入更多,即 column[0]=0
1 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
row = {1,2,2,2}
column={2,2,1,2}
1 0 0 0
1 0 0 0
0 0 0 0
1 0 0 0
row = {1,1,2,2}
column={2,1,1,2}
现在因为 column[0]==0 我可以转到下一列并再次执行相同的过程
推荐阅读
- dynamics-crm - 删除所有依赖组件后如何删除实体?
- javascript - 地图循环中的onchange更新状态[反应]
- syntax - 语法错误 JAGSUI:解析模型文件时出错
- python - 如何在单个 django 频道视图中创建/添加多个组
- c++ - 如何让数组显示升序和降序
- ruby-on-rails - 没有数据库的自定义属性
- sql-server - 使用 SQL Server 导入 gcloud 数据
- python - tkinter 显示错误:ValueError:无法将字符串转换为浮点数:
- sql - 不匹配的记录应该被拉入 bigquery
- java - IntelliJ 缩进避免使用 2 个制表符