解题心得:

1、在明确使用DFS之后一定要找到递归函数的出口、方向,以及递归的点(在某个情况下开始递归)(void 也可以return,但是没有返回值)。递归时也要有递归的方向,最后都能够达到递归的出口。

2、在DFS递归的出口处可以用一个数组来进行记录最终的结果,双向递归可以用一个二位数组来记录结果。

3、在循环中,尽量不要多次使用一个变量(不然找错找得你哭瞎双眼。伤心。。。。。。)。

4、先找思路再写程序,写程序时小心变量是否用对,数组是否越界,变量是否初始化,特别实在循环中时。当循环出现多层的时候,检查关键的步骤是否放对循环。

5、找错找得哭瞎双眼的时候一定要反思总结啊。

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

Raw

4

2 3 1 4

4

1 1 1 1

Sample Output

Raw

2

6

Hint

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

#include<stdio.h>
int a[16],i,j,jie[2][30000],k,l,n,d[2],b,z;//命名混乱
void DFS(int n,int sum)
{
if(n == k)//递归的出口
{
jie[l][d[l]++] = sum; //二维数组记录最终的结果
return ;  //void也可以return 但没有值
}
DFS(n+1,sum + a[n+b]);   //‘+’
DFS(n+1,sum - a[n+b]);   //‘-’
}
int main()
{
int num;
while(scanf("%d",&n)!=EOF)
{
num = 0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
b = 0;
k = i;
l = 0;
d[0] = 0;
DFS(1,a[0]);
b = i;
k = n - i;
l = 1;
d[1] = 0;
DFS(1,a[i]);
for(z=0;z<d[0];z++)  //不要使用i,找瞎了双眼
{
for(j=0;j<d[1];j++)
{
if(jie[0][z] == jie[1][j])
num++; //记录个数
}
}
}
printf("%d\n",num);
}
}

DFS:C 小Y的难题(1)的更多相关文章

  1. 小Y的难题

    Font Size:Aa Aa Aa Description 近期小Y迷上了数学,总是在思考各种数学问题.有一天,他不小心把墨水洒在草稿纸上.他如今能看到的是"2?3?1?4"(? ...

  2. 【luoguP4006 清华集训2017】小Y和二叉树

    题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下 ...

  3. 【luogu P4005 清华集训2017】小Y和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  4. 【UOJ#340】【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划)

    [UOJ#340][清华集训2017]小 Y 和恐怖的奴隶主(矩阵快速幂,动态规划) 题面 UOJ 洛谷 题解 考虑如何暴力\(dp\). 设\(f[i][a][b][c]\)表示当前到了第\(i\) ...

  5. 【洛谷4005】小Y和地铁(搜索)

    [洛谷4005]小Y和地铁(搜索) 题面 洛谷 有点长. 题解 首先对于需要被链接的两个点,样例中间基本上把所有的情况都给出来了. 但是还缺了一种从下面绕道左边在从整个上面跨过去在从右边绕到下面来的情 ...

  6. P4005 小 Y 和地铁

    题目描述 小 Y 是一个爱好旅行的 OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的一条曲线,不同线路的交点处一定会设有 换乘站 . ...

  7. [LOJ#2324]「清华集训 2017」小Y和二叉树

    [LOJ#2324]「清华集训 2017」小Y和二叉树 试题描述 小Y是一个心灵手巧的OIer,她有许多二叉树模型. 小Y的二叉树模型中,每个结点都具有一个编号,小Y把她最喜欢的一个二叉树模型挂在了墙 ...

  8. [LOJ#2323]「清华集训 2017」小Y和地铁

    [LOJ#2323]「清华集训 2017」小Y和地铁 试题描述 小Y是一个爱好旅行的OIer.一天,她来到了一个新的城市.由于不熟悉那里的交通系统,她选择了坐地铁. 她发现每条地铁线路可以看成平面上的 ...

  9. nyist 604 小明的难题

    http://acm.nyist.net/JudgeOnline/problem.php?pid=604 小明的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 ...

随机推荐

  1. vue多个组件的过渡

    <transition name="component-fade" mode="out-in"> <component v-bind:is=& ...

  2. ArcGIS Engine中的Symbols详解(转)

    本文来源:http://blog.csdn.net/mengdong_zy/article/details/8980842 原文如下: Symbols Symbol level drawing Joi ...

  3. zookeeper的几种使用场景

    1.数据的发布与订阅 通过发布与订阅实现配置的信息的统一管理,主要采用zk节点可以存储数据的特性,我们可以将一些配置信息存放到某一节点上,订阅这个节点的服务就可以动态的获取这个节点的数据.在应用启动的 ...

  4. “System.OutOfMemoryException”类型的未经处理的异常在 mscorlib.dll 中发生

    在VS中写程序遇到这样的问题.但数据规模小的时候不出现,但数据规模大的时候就出现.但我的电脑用32G内存.处理的文本也不是很多,在文本alignment时出错.

  5. 数据仓库是什么?OLTP和OLAP是什么?

    数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Varian ...

  6. PowerShell 脚本域策略管理

    大中型企业中,会设置许多组策略进行日常运维管理 ,毕然里面也存在许多废弃的策略,需要我们定期清理我们的组策略信息.通常我们导出HTML报告方式来帮助我们分析组策略信息: #1 首先需要加载GroupP ...

  7. 10大炫酷的HTML5文字动画特效欣赏

    文字是网页中最基本的元素,在CSS2.0时代,我们只能在网页上展示静态的文字,只能改变他的大小和颜色,显得枯燥无味.随着HTML5的发展,现在网页中的文字样式变得越来越丰富了,甚至出现了文字动画,HT ...

  8. 20145238-荆玉茗 《Java程序设计》第3周学习总结

    20145238 <Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: ·类定义时使用class关键字 ·如果要将x绑定到新建的对象上,可以使用"="制定 ...

  9. 剑指offer28 字符串的排列

    1.全局变量可以在最后去定义并初始化,不一定非要在开头 2.此题有一种特殊情况需要考虑,比如字符串是“aa”,那输出应该是“aa”,而不是“aa,aa”,即相同的不输出.实现这个处理用了c++中的容器 ...

  10. matlab的figure窗口命名为中文

    figure('NumberTitle', 'off', 'Name', '我的窗口名字');