0

假设我有一个固定大小的数组。我想用 1s 或 2s 填充数组,以便所有元素总和为 X。

例子:

  • 所需总和 = 12
  • 数组大小 = 7

可能的组合:

array( 1, 2, 2, 2, 1, 2, 2 ) // sums to 12

array( 1, 1, 2, 2, 2, 2, 2 ) // sums to 12
4

1 回答 1

8
  • 找出数组中 2 的个数,这个数是:

    #2's = X - array_size
    
  • 选择随机的任意#2's元素(例如第一个元素),并赋予它们值 2,其余元素将获得值 1。

注意:很容易看出问题是否X < array_sizeX> 2*array_size没有解决方案(显然上面的算法会失败)

于 2013-01-22T16:08:56.923 回答