1 2 4 8 16即是这个问题的一个答案。
1 = 1
2 = 2
3 = 1 + 2
4 = 4
5 = 1 + 4
6 = 2 + 4
7 = 1 + 2 + 4
......
在一个组合中,每个数有且只有两个状态,出现或不出现,对应二进制的0和1。5个不同的数能表示出的状态最多只有32种状态(如果不包括0的话是31种)。
这里只要求表示23种状态的话,其实5个数是冗余的。
这种问题就没必要上代码了。一个类似的问题是用N个砝码的天平可以称量出多少种不同的重量。这是三进制(每个砝码有三种状态,可以称量物体放在一起,可以放在天平的另一边,也可以不放在天平上)。