1873: This offer(zzuli)

Posted 康栋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1873: This offer(zzuli)相关的知识,希望对你有一定的参考价值。

题目描述

话说WX入职已经有一个多月了,公司boss突然扔给他了一个问题,如果解决不了的话就会被开除掉 - -#,情急之下他只能来请教你了,boss给了他N个不大于100的数,现在wx需要将这N个数通过在两两间添上‘+’或‘-’,最后合成为一个数,注意数字的顺序不能被改变,不同的方式会得到不同的结果,boss想要知道最后一共能得到多少种不同的结果

 

输入

输入案例有多组,每组数据占两行,第一行输入一个整数,即N1<=n<=20),第二行输入N个数Ai0<= Ai <= 100

 

输出

对于每组数据,输出最终能得到的结果数

 

样例输入

3
1 2 4
4
1 2 2 3

样例输出

4
6
 1 #include<iostream>
 2 #include<algorithm>
 3 #include<numeric>
 4 #include<cstring>
 5 using namespace std;
 6 int n, k, a[1000], b[5000];
 7 void dfs(int i, int Sum)
 8 {
 9     if (i == n)
10     {
11         b[Sum] = 1; return;
12     }
13         dfs(i + 1, Sum + a[i]);
14         dfs(i + 1, Sum - a[i]);
15 }
16 int main()
17 {
18     while (~scanf("%d",&n))
19     {
20         k = 0;
21         for (int i = 0; i < n; i++)
22             cin >> a[i];
23         memset(b,0,sizeof(b));
24         dfs(1,2000+ a[0]);
25         int ans = 0;
26         for (int i = 0; i < 5000; i++)
27             if (b[i]) ans++;
28         printf("%d\n", ans);
29     }
30     return 0;
31 }

 

//在处理得到的每一个sum时,记录了每一个结果,总是时间超限,哎,心痛。好不容易知道了怎么弄,,,最终还是白了

以上是关于1873: This offer(zzuli)的主要内容,如果未能解决你的问题,请参考以下文章

●POJ 1873 The Fortified Forest

zzuli oj 1105 友好数对

HDU 1873 看病要排队 —— priority_queue 的使用

zzuli OJ 1128: 课程平均分

zzuli 1430 多少个0

zzuli oj 1134 字符串转换