给定n(<=100) 个数字 ([0, 1e5]之间)
问通过(加减操作),可以组成多少个数字?
比如对于[1, 4, 6]
1 = 1
2 = 6 - 4
3 = 4 - 1
4 = 4
5 = 1 + 4
....
' 首先,遇到这类题 凑数, 第一直觉 往往是“预处理” '
因为答案一定形如: a - b + c - d + e ... 的形式
即有(a + c + e + ..) - (b + d + ...)
即,若干个数字的和 - 若干个数字的和
方法1: (这也是比赛写的算法.... -,-)
bac[2^n] = {
所有2^n的选的情况(即若干数字的和)}
for( front : 2^n )
for( back : 2^n ){
vis[front - back] = true;
}
I: 时间肯定是超时的
II: 你会有超级多的 '不必要'
蓝桥杯_拼数字dp
最新推荐文章于 2024-05-15 21:16:34 发布