您的位置:首页 > 其它

swost OJ 2469: C 小Y的难题(1)

2016-04-23 13:29 253 查看


Description

近期小Y迷上了数学,总是在思考各种数学问题。有一天,他不小心把墨水洒在草稿纸上。他如今能看到的是“2?3?1?4”(?表示看不清的地方)。小Y的记忆力不错,他知道:
1、每一个?仅仅会是“+”、“-”,“=”三个符号之中的一个。
2、总共同拥有且仅有一个“=”。
3、原式一定是一个等式。如“2+3-1=4”
如今他突然想知道,有多少种可能性,满足上面3个要求。



Input

多组输入。
每组第一行有一个数字n。表示小Y从左到右,一共能够看到n个数字。(2<=n<=15)
每组第二行有n个数字。分别表示这n个数字是什么。保证每一个数字都是非负整数,且小于10^7。



Output

对于每组,输出一行,这一行仅仅有一个数字,表示有多少种可能性满足题意。



Sample
Input

4
2 3 1 4
4
1 1 1 1



Sample
Output

2
6

#include<stdio.h>
int map[30],n,ans;
void DFS(int sum,int count,int count1)  //count1记录的是等式的减号,有多少个减号就有多少种=号可以达到目标
{
if(count>n)
return;
if(sum==0&&count==n)
ans+=count1;
DFS(sum+map[count],count+1,count1);
DFS(sum-map[count],count+1,count1+1);
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
ans=0;
for(int i=0;i<n;i++)
scanf("%d",&map[i]);
DFS(map[0],1,0);
printf("%d\n",ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: