#1477. 积木游戏

积木游戏

题目背景

小明有一盒积木,最多有 33 块积木,每个积木的高度都是正整数。他喜欢将积木叠起来搭建高塔,每次搭建时可以选择使用 1块、2块或全部3块积木(每个积木只能用一次,叠放顺序不影响总高度,总高度为所选积木高度之和)。现在,小明从积木盒中取出了 n块积木(n ≤ 3),他想知道:通过选择不同数量的积木(至少选1块),可以组合出多少种 不同的总高度

题目描述

给定 n个正整数(代表n块积木的高度,n = 1、2或3),计算所有可能的 非空子集(子集大小为121、233,取决于nn)的元素和的 不同值的个数

输入格式

第一行包含一个整数 nn1n3 1 \le n \le 3),表示取出的积木数量。
第二行包含 nn 个整数,用空格分隔,表示每块积木的高度(1高度1001 \le 高度 \le 100)。

输出格式

输出一个整数,表示能组合出的不同总高度的个数。

输入输出样例

样例 1

输入:

3  
1 2 3

输出:

6

解释:

  • 选1块:1、2、3(3种)
  • 选2块:1+2=3、1+3=4、2+3=5(去重后3、4、5,共3种,注意3与选1块的3重复,只算1次)
  • 选3块:1+2+3=6(1种)
    总共有1、2、3、4、5、6,共6种不同高度。

样例 2

输入:

2
2 2

输出:

2

解释:

  • 选1块:2(1种,两个2的和相同)
  • 选2块:2+2=4(1种)
    总共有2、4,共2种不同高度。

限制与约定

对于 100%100\% 的数据,保证 n{1,2,3}n ∈ \{1, 2, 3\} 每个积木的高度为 1h1001 \le h \le 100

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB