Zero Sum
Consider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... N.
Now insert either a `+' for addition or a `-' for subtraction or a ` ' [blank] to run the digits together between each pair of digits (not in front of the first digit). Calculate the result that of the expression and see if you get zero.
Write a program that will find all sequences of length N that produce a zero sum.
PROGRAM NAME: zerosum
INPUT FORMAT
A single line with the integer N (3 <= N <= 9).
SAMPLE INPUT (file zerosum.in)
7
OUTPUT FORMAT
In ASCII order, show each sequence that can create 0 sum with a `+', `-', or ` ' between each pair of numbers.
SAMPLE OUTPUT (file zerosum.out)
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7
USACO_2.3-3:zerosum零的算式和
Time Limit:1000MS Memory Limit:65536K
Total Submit:6 Accepted:4
Description
请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将每一对数字组合在一起(请不在第一个数字前插入符号)。计算该表达式的结果并注意你是否得到了和为零。请你写一个程序找出所有产生和为零的长度为N的数列。
Input
PROGRAM NAME: zerosum
单独的一行表示整数N (3 <= N <= 9)。
Output
按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。
Sample Input
7
Sample Output
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7
1-2-3-4-5+6+7
========================= 华丽的分割线 =========================
一个DFS, 题目说了按ASCII的顺序进行输出, 也就是先' ', 再'+', 接着'-'.., 我拿到题目就写了一个程序,, DFS没写错, 就是算和的时候错了. 试着写了几个版本, 都错了..(看样子我还是不怎么滴啊~~ 狂汗'').
不说多的废话了, 代码贴上来:
/*
LANG: C
ID: zqy11001
PROG: zerosum
*/
#include <stdio.h>
#define getint(i) scanf("%d", &i)
#define putint(i) printf("%d", i)
#define ze(now, c) str[now] = c; zero(now + 1);
#define MAX 200
int n;
char str[9];
void out(void)
{
int i;
putchar('1');
for(i = 1; i < n; i++){
printf("%c%d", str[i], i + 1);
}
putchar('\n');
}
void zero(int sum, int t, int now, char s)
{
if(now == n){
if(s == '+'){
sum += t;
}else{
sum -= t;
}
if(sum == 0 && str[0] == '+'){
out();
}
return;
}
str[now] = ' ';
zero(sum, t * 10 + now + 1, now + 1, s);
if(s == '+'){
sum += t;
}else{
sum -= t;
}
str[now] = '+';
zero(sum, now + 1, now + 1, '+');
str[now] = '-';
zero(sum, now + 1, now + 1, '-');
}
int main(void)
{
int i, j;
freopen("zerosum.in", "r", stdin);
freopen("zerosum.out", "w", stdout);
getint(n);
zero(0, 0, 0, '+');
return 0;
}
分享到:
相关推荐
【标题】:“usaco2.3解题报告1”涉及的知识点主要集中在动态规划和数据结构上,特别是字符串处理和二叉树。 【描述】:“usaco2.3解题报告1”描述了一个生物学背景的问题,需要计算一个大写字母序列最长的前缀可以...
USACO(美国计算机奥林匹克竞赛)是针对高中生的一项编程竞赛,旨在提高参赛者的算法设计、问题解决和编程技能。这个压缩包文件包含了USACO网站上的题目,对于准备机考和提升编程能力非常有帮助。下面我们将深入探讨...
《USACO1.4~2.3C语言题解》是针对USACO(美国计算机...总之,《USACO1.4~2.3C语言题解》是学习和准备USACO竞赛的重要参考资料,通过深入理解和实践,不仅可以提升C语言编程技能,还能增强算法思维和问题解决能力。
USACO(美国计算机奥林匹克竞赛)是一场针对高中生的在线编程比赛,旨在提升参赛者在算法、数据结构和编程方面的技能。源程序是参赛者解决问题的关键,通过编写代码来实现特定的功能或解决数学和逻辑问题。这个...
USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...
USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...
3. **2.2.3 Zero Sum**:这可能是一个关于数组处理和数学的问题,需要找出数组中元素和为零的子集,可能涉及到哈希表和回溯算法。 4. **2.1.1 The Castle**:题目可能涉及到二维空间的路径规划,要求选手编写程序找...
这个合集提供了丰富的资源,包括英文原题、中文译题、测试数据以及解答,对于想要深入学习和准备USACO竞赛的学生来说,是一份极其宝贵的资料。 1. **USACO译题.chm**:这份文件包含了USACO历年竞赛的题目翻译,对于...
USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决数学和计算机科学问题上的技能。 【描述】"usaco traning的全部数据 才要3分" 暗示这些数据可能是指USACO训练...
USACO 2010-2011 季度竞赛不仅为热爱计算机科学的学生提供了展示自己的舞台,也为未来的计算机科学家们提供了一个相互交流和学习的机会。通过这些竞赛,学生们不仅能提升自己的编程能力,还能结识来自世界各地的同好...
这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好地理解和准备USACO比赛。 首先,"USACO教程.doc"是一个Word文档,可能包含了对USACO竞赛的基本介绍、参赛流程、评分标准以及一些基础编程和算法的知识。...
USACO,全称United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、编程能力和问题解决能力。本压缩包包含了USACO比赛的题解、源代码以及对应的中文翻译,对于想要...
USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...
**USACO**(美国计算机奥林匹克竞赛)作为一项国际知名的编程竞赛,不仅考验参赛者的编程能力,还对其算法理解和应用有着极高的要求。其中,动态规划(Dynamic Programming, DP)作为一种重要的算法思想,在USACO...
USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...
USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...
USACO,全称United States Computer Olympiad,是美国计算机奥林匹克竞赛,是一项旨在培养青少年编程技能和算法理解的国际性比赛。这个比赛对于有志于在计算机科学领域深入发展的学生来说,具有很高的学习价值和挑战...
USACO,全称United States阿Olympiad in Computer Science,是美国计算机科学奥林匹克竞赛,旨在激发中学生对计算机科学的兴趣,尤其是算法和编程技能。这个"USACO全部测试数据.zip"压缩包包含了历年来USACO比赛的...
USACO,全称为United States Computer Olympiad,是一项面向中学生的计算机编程竞赛,旨在提高参赛者的算法设计、问题解决和编程能力。这个压缩包文件包含了USACO前几节的程序和代码,对于想要学习和准备USACO比赛的...
2007年的USACO比赛测试数据集合为参赛者或学习者提供了一个宝贵的资源库,可以用来检验自己的算法理解和代码编写能力。 在USACO竞赛中,选手需要解决一系列精心设计的问题,这些问题往往涉及到基础算法、数据结构...