1
sean10 2018-03-15 20:55:04 +08:00 via Android
|
2
ipwx 2018-03-15 21:07:28 +08:00
题目要求输出所有组合。所以数组长度必然不大,毕竟最后的存储空间要达到 sizeof(int) * n * 2^n 字节。所以我们假设 n < 32。所以可以 for (unsigned int i=0; i<(1<<n); ++i),然后在循环里面根据 i 的二进制位(是否为 1 ),选择元素,生成列表。
|
3
msg7086 2018-03-16 02:37:03 +08:00
扩展不是背包问题吧?
|
6
msg7086 2018-03-16 09:21:20 +08:00
把数字转换成二进制,是 1 的位就选出对应的数字下标,是 0 就不选,然后本题应该是要去掉只有一个数的数组吧,过滤一下就好了。
|