我如何通过归纳来解决这个问题?
假设您被赋予一个算法作为黑盒子,您无法看到它是如何设计的,它具有以下属性:如果您输入任何实数序列和一个整数k,算法将回答YES或NO表示是否存在是数字的子集,其总和恰好是k。展示如何使用这个黑盒子来找到总和为k的给定序列{X1,...,Xn}的子集。你可以使用黑匣子O(n)次。
有什么想法吗?
答案 0 :(得分:3)
我并不完全相信这里需要感应。
这是我的两分钱:
假设您有一系列数字S
和整数k
,并且您已经知道存在一个数字的子集,其总和为k
。现在,从序列中删除一个数字(称之为i
),然后在遗留的内容上使用黑框(使用与之前相同的k
)。
i
及其总和为S
的{{1}}的任何子集?k
以及i
的任何子集S
的内容是什么?