`
zqynux
  • 浏览: 36369 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

USACO 2.3 Zero Sum 零的算式和

阅读更多
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;
}
0
0
分享到:
评论

相关推荐

    usaco2.3解题报告1

    【标题】:“usaco2.3解题报告1”涉及的知识点主要集中在动态规划和数据结构上,特别是字符串处理和二叉树。 【描述】:“usaco2.3解题报告1”描述了一个生物学背景的问题,需要计算一个大写字母序列最长的前缀可以...

    USACO 题目

    USACO(美国计算机奥林匹克竞赛)是针对高中生的一项编程竞赛,旨在提高参赛者的算法设计、问题解决和编程技能。这个压缩包文件包含了USACO网站上的题目,对于准备机考和提升编程能力非常有帮助。下面我们将深入探讨...

    USACO1.4~2.3C语言题解

    《USACO1.4~2.3C语言题解》是针对USACO(美国计算机...总之,《USACO1.4~2.3C语言题解》是学习和准备USACO竞赛的重要参考资料,通过深入理解和实践,不仅可以提升C语言编程技能,还能增强算法思维和问题解决能力。

    usaco 源程序 section2.3---section 5.5

    USACO(美国计算机奥林匹克竞赛)是一场针对高中生的在线编程比赛,旨在提升参赛者在算法、数据结构和编程方面的技能。源程序是参赛者解决问题的关键,通过编写代码来实现特定的功能或解决数学和逻辑问题。这个...

    usaco 合集usaco 合集usaco 合集

    这个合集提供了丰富的资源,包括英文原题、中文译题、测试数据以及解答,对于想要深入学习和准备USACO竞赛的学生来说,是一份极其宝贵的资料。 1. **USACO译题.chm**:这份文件包含了USACO历年竞赛的题目翻译,对于...

    usaco.rar_USACO 翻译 下载_usaco _usaco 翻译

    USACO,全称为United States阿Olympiad in Informatics,是美国计算机奥林匹克竞赛,旨在为高中生提供一个学习和展示编程技能的平台。这个比赛涵盖了算法、数据结构以及问题解决等多个方面,对于想要深入理解计算机...

    USACO题集及答案

    USACO,全称为United States Computer Olympiad,是一项面向全球中学生的计算机编程竞赛,旨在提升参赛者的算法设计、问题解决和编程能力。该比赛每年举行,分为青铜、白银、黄金和铂金四个级别,难度逐渐递增。...

    USACO.zip_usaco

    3. **2.2.3 Zero Sum**:这可能是一个关于数组处理和数学的问题,需要找出数组中元素和为零的子集,可能涉及到哈希表和回溯算法。 4. **2.1.1 The Castle**:题目可能涉及到二维空间的路径规划,要求选手编写程序找...

    usaco traning全部数据

    USACO是一个专门为美国中学生设计的在线编程竞赛,旨在提升参赛者的算法设计和编程能力,特别是在解决数学和计算机科学问题上的技能。 【描述】"usaco traning的全部数据 才要3分" 暗示这些数据可能是指USACO训练...

    usaco 2010-2011

    USACO 2010-2011 季度竞赛不仅为热爱计算机科学的学生提供了展示自己的舞台,也为未来的计算机科学家们提供了一个相互交流和学习的机会。通过这些竞赛,学生们不仅能提升自己的编程能力,还能结识来自世界各地的同好...

    USACO翻译及题解

    这个压缩包文件提供了丰富的资源,帮助参赛者或学习者更好地理解和准备USACO比赛。 首先,"USACO教程.doc"是一个Word文档,可能包含了对USACO竞赛的基本介绍、参赛流程、评分标准以及一些基础编程和算法的知识。...

    usaco心得及总结

    **USACO**(美国计算机奥林匹克竞赛)作为一项国际知名的编程竞赛,不仅考验参赛者的编程能力,还对其算法理解和应用有着极高的要求。其中,动态规划(Dynamic Programming, DP)作为一种重要的算法思想,在USACO...

    USACO 1.1 c++源程序

    USACO,全称为United States Computer Olympiad,是一项面向中学生的国际性计算机编程竞赛,旨在提升参赛者的算法设计和编程能力。USACO比赛通常使用C++语言进行,因此"USACO 1.1 c++源程序"指的是USACO入门阶段1.1...

    usaco历年测试数据

    USACO(美国计算机奥林匹克竞赛)是面向全球中学生的一项编程竞赛,主要涉及算法和问题解决能力。这个压缩包文件“usaco历年测试数据”包含了该赛事历年的测试题目和样例输入输出数据,这对于参赛者准备比赛或者提升...

    USACO历年比赛测试数据:2003年

    USACO(USA Computing Olympiad)是美国计算机奥林匹克竞赛,是一项面向中学生的编程竞赛,旨在提升学生的算法设计、编程和问题解决能力。该比赛通常包括训练营和一系列在线比赛,最终选拔出优秀选手代表美国参加...

    usaco题解+程序

    USACO,全称为United States Computer Olympiad,是一项面向中学生的计算机编程竞赛,旨在提高参赛者的算法设计、问题解决和编程能力。这个压缩包文件包含了USACO前几节的程序和代码,对于想要学习和准备USACO比赛的...

    USACO做题代码

    通过查看和学习这些代码,可以加深对C++编程和算法的理解,提升编程能力,并为参加USACO或其他类似竞赛做好准备。每个子文件可能对应一个特定的USACO题目,通过阅读和分析代码,可以学习到如何将理论知识转化为实际...

    USACO历年比赛测试数据:2005年

    USACO,全称为United States Computer Olympiad,是一项面向美国中学生的编程竞赛,旨在培养青少年在算法设计、问题解决和计算机科学方面的技能。这个压缩包包含的是2005年度USACO比赛的测试数据,对于参赛者或者对...

    USACO历年比赛测试数据:2004年

    USACO,全称United States Computer Olympiad,是美国计算机奥林匹克竞赛,是一项旨在培养青少年编程技能和算法理解的国际性比赛。这个比赛对于有志于在计算机科学领域深入发展的学生来说,具有很高的学习价值和挑战...

    usaco_training code

    这些文件应该包含了针对具体USACO训练题目实现的算法和解决方案。 在学习这个压缩包中的内容时,你可以关注以下几个方面: 1. **算法设计**:分析每个问题的解决方案,理解作者是如何将问题转化为可执行的算法的。...

Global site tag (gtag.js) - Google Analytics