码迷,mamicode.com
首页 > 其他好文 > 详细

1873: This offer(zzuli)

时间:2018-04-17 18:02:07      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:时间   ++   一个   scan   amp   mil   顺序   就会   his   

题目描述

话说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)

标签:时间   ++   一个   scan   amp   mil   顺序   就会   his   

原文地址:https://www.cnblogs.com/kangdong/p/8868137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!