2469: 小Y的难题1---SWUST 信息学院OJ

题目描述:http://www.oj.swust.edu.cn/problem/show/2469

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

对于每组,输出一行,这一行只有一个数字,表示有多少种可能性满足题意。
4
2 3 1 4
4
1 1 1 1
2
6

Hint

数字之间一定有且仅有一个符号,第一个数字前没有符号。

AC代码:
 1 #include<stdio.h>
 2
 3 int a[18];
 4 char s[18];
 5 int n;
 6 int flag;
 7 int ans;
 8
 9 void DFS(int level)//DFS搜索+-=出现的可能性
10 {
11
12     if(level==n-1)
13     {
14         int i=0,L=a[0],R=0;
15
16         while(s[i]!=‘=‘&&i<n-1) {
17
18             if(s[i]==‘+‘) L+=a[i+1];
19             else if(s[i]==‘-‘) L-=a[i+1];
20
21             i++;
22
23         }
24
25         while(i<n-1) {
26
27             if(s[i]==‘+‘) R+=a[i+1];
28             else if(s[i]==‘-‘) R-=a[i+1];
29             else R=a[i+1];
30
31             i++;
32
33         }
34
35         if(L==R&&flag) ans++;
36
37         return;
38
39     }
40
41     s[level]=‘+‘;
42     DFS(level+1);
43
44     s[level]=‘-‘;
45     DFS(level+1);
46
47     if(flag) return;
48
49     s[level]=‘=‘;
50     flag=1;
51     DFS(level+1);
52     flag=0;
53
54 }
55
56 int main()
57 {
58
59     while(scanf("%d",&n)!=EOF)
60     {
61
62         int i;
63
64         ans=0;
65
66         for(i=0;i<n;i++) scanf("%d",&a[i]);
67
68         DFS(0);
69
70         printf("%d\n",ans);
71
72     }
73
74     return 0;
75
76 }
时间: 2024-12-20 00:44:35

2469: 小Y的难题1---SWUST 信息学院OJ的相关文章

小Y的难题

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

小Y的轮回之路——攒机装机、B150装win7

两个月前,陪伴我5年多的小Y(ideapad-y460N卡)突然大伤元气,硬盘跪了,显示屏也黑了一小块.本着经济实惠凑合用的态度换了个320G的硬盘,没想过几天显示屏情况加重,出现无数个红绿相间的线条.正所谓天下无不散之筵席,既然无缘并肩作战,那就一路走好~ 寻寻觅觅,冷冷清清,凄凄惨惨戚戚.在无数次寻寻觅觅后,决定入手一款台式机.记得小时候有一阵子特别时兴组装机,奈何当时不太懂电脑各种乱七八糟的参数,买的都是品牌机.现在也懂个七七八八了,反正都是套路嘛!既然有需求,有情怀,又有知识,那就搞起吧

[LOJ#2325]「清华集训 2017」小Y和恐怖的奴隶主

[LOJ#2325]「清华集训 2017」小Y和恐怖的奴隶主 试题描述 "A fight? Count me in!" 要打架了,算我一个. "Everyone, get in here!" 所有人,都过来! 小Y是一个喜欢玩游戏的OIer.一天,她正在玩一款游戏,要打一个Boss. 虽然这个Boss有 \(10^{100}\) 点生命值,但它只带了一个随从--一个只有 \(m\) 点生命值的"恐怖的奴隶主". 这个"恐怖的奴隶主&qu

【清华集训】小Y和地铁

题目: 小 $\rm Y$ 是一个爱好旅行的 $\rm OIer$.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁.她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有换乘站.通过调查得知,没有线路是环线,也没有线路与自身相交.任意两条不同的线路只会在若干个点上相交,没有重合的部分,且没有三线共点的情况.即,如图所示的情况都是不存在的: 小 Y 坐着地铁 $0$ 号线,路上依次经过了 $n$ 个换乘站.她记下了每个换乘站可以换乘的线路编号,发现每条线路与她

P4005 小 Y 和地铁

题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 .通过调查得知,没有线路是环线,也没有线路与自身相交.任意两条不同的线路只会在若干个点上相交,没有重合的部分,且没有三线共点的情况.即,如图所示的情况都是不存在的: 小 Y 坐着地铁 0 号线,路上依次经过了 n 个换乘站.她记下了每个换乘站可以换乘的线路编号,发现每条线路与她所乘坐的线路最多只有 2

UOJ#339. 【清华集训2017】小 Y 和二叉树 贪心

原文链接 www.cnblogs.com/zhouzhendong/p/UOJ339.html 前言 好久没更博客了,前来更一发. 题解 首先,我们考虑一个子问题:给定根,求出最小中序遍历. 如果根节点有一个儿子,那么,我们需要比较根节点和 儿子的最小中序遍历的第一个元素,选择较优的一方放在前面. 如果根节点有两个儿子,那么,我们必然选择最小中序遍历较小的儿子放在左儿子. 由于所有节点编号互不相同,所以我们在比较两个部分的字典序时,只关注第一个元素的大小. 可以发现,一个有两个儿子的节点是不可能

小Y的涂鸦 数学期望 dp

题意概述: 现在给出一个N*N的方格纸,有M个格子已经被涂黑了.现在小明也来涂格子,每次等概率地涂格子(包括已经被涂过的),问期望的涂格子次数,使得方格纸每一行每一列都至少有一个格子被涂过. 数据范围: 1 ≤ n ≤ 2·103,0 ≤ m ≤ min(n2, 2·103),1 ≤ ri, ci ≤ n  (这是给出的涂过的格子的坐标), Time limit : 1 s,Memory limit : 512 mb 分析: 我开始有一点小小的认为我的脑子可能有点好使了(YY出一个自己认为掌握的

小Y的Python学习日志--流程控制(逻辑符)

#本文仅为个人学习过程的整理和记录,如有从他人博客.网站摘录的内容,本人会明确标明,如有涉及侵权,请联系本人,本人会在第一时间删除.  以下的资料整理来自(1)廖雪峰的Python教程 http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 (2)简明Python教程 http://woodpecker.org.cn/abyteofpython_cn/chinese/ (1)逻辑运算符

小Y的Python学习日志--Python2.0和3.0的一些区别(转)

#本文仅为个人学习过程的整理和记录,如有从他人博客.网站摘录的内容,本人会明确标明,如有涉及侵权,请联系本人,本人会在第一时间删除. 参考资料网址:http://www.cnhonkerarmy.com/thread-58029-1-1.html 1.性能 Py3.0运行 pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可 以取得很好的优化结果. Py3.1性能比Py2.5慢15%,还有很大的提升空间.2.编码 Py3.