用1和0填充n * n数组

时间:2018-10-25 21:51:20

标签: algorithm multidimensional-array nested-loops

因此,在给定每一行和每一列的元素数量的情况下,我试图用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,但是在任何情况下,两者之和都是相等的,但是仍然不存在稳定的组合。

1 个答案:

答案 0 :(得分:0)

我找到的答案是贪婪的方法,在其中回答每个子问题。因此,我逐列浏览,并根据行的权重填写每一列。
记住索引从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,我可以转到下一列并再次执行相同的过程