如果我有来自1 to n的n-r数字,其中r数字在两者之间缺失,那么我如何计算这些数字相加可以形成的所有可能的数字(或者以2/3/4/5/6为一组...)。
例如,假设我有5-2号,也就是说,缺少1 2 4和3 5。现在,我可以形成
1 - {1}
2 - {2}
3 - {1,2}
4 - {4}
5 - {1,4}
6 - {4,2}
7 - {1,2,4}
8 - Cannot be formed这是我需要找出的,这是从1开始的第一个数字,我不能使用给定数字的组合来形成它。一个简单的逻辑就可以了。谢谢!
发布于 2015-01-09 01:38:16
假设S[i]是可以由数字的第一个i组成的数字集。然后给定S[i],很容易构造S[i+1]:从S[i]开始,然后添加s+r形式的所有数字,其中s在S[i]中,r是列表中的(i+1)-th数字。
因此,您可以迭代地构建集合s[0] = {0}, S[1],...,S[n-r],并且S[n-r]包含所有可能的和。
下面是你的例子的结果:
S[0] = {0}
r = 1: S[1] = {0} union {0+1} = {0,1}
r = 2: S[2] = {0,1} union {0+2,1+2} = {0,1,2,3}
r = 4: S[3] = {0,1,2,3} union {0+4,1+4,2+4,3+4} = {0,1,2,3,4,5,6,7}https://stackoverflow.com/questions/27845636
复制相似问题