USACO 2.3 Zero Sum
来源:互联网 发布:mysql数据库存图片 编辑:程序博客网 时间:2024/06/05 09:39
题目:
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+71+2-3-4+5+6-71-2 3+4+5+6+71-2 3-4 5+6 71-2+3+4-5+6-71-2-3-4-5+6+7
思路: 水题。深搜,生成字符串,然后判断该字符串是否符合要求,输出。
代码:
/*ID: gjj50201LANG: C++TASK: zerosum*/#include <stdio.h>#include <string>#include <iostream>#include <algorithm>#include <queue>using namespace std;int n;char digits[10] = {'0','1','2','3','4','5','6','7','8','9'};queue<string> ans;bool check(string s){int sum = 0;queue <char> op;queue <int> num;for(int i=0;i<=s.size();i++){if(i == s.size())num.push(sum);else if(s[i] == '+' || s[i] == '-'){op.push(s[i]);num.push(sum);sum = 0;}else if(s[i]>='1' && s[i]<= '9')sum = sum*10 + s[i] - '0';}int d1,d2;d1 = num.front();num.pop();while(!op.empty()){char o;o = op.front();op.pop();d2 = num.front();num.pop();switch(o){case '+':{d1 = d1 + d2;break;}case '-':{d1 = d1 - d2;break;}}} if(d1 == 0){return true;}elsereturn false;}void dfs(string s,int k){s = s + digits[k];if(k == n){if(check(s))ans.push(s);return;}dfs(s+' ',k+1);dfs(s+'+',k+1);dfs(s+'-',k+1);return;}int main(){freopen("zerosum.in","r",stdin);freopen("zerosum.out","w",stdout);cin>>n;dfs("",1);while(!ans.empty()){cout<<ans.front()<<endl;ans.pop();}return 0;}
0 0
- [usaco]2.3 Zero Sum
- USACO--2.3Zero Sum
- USACO 2.3 Zero Sum
- USACO 2.3 Zero Sum
- USACO 2.3.3 Zero Sum
- USACO 2.3.3 Zero Sum
- USACO 2.3 Zero Sum (zerosum)
- USACO 2.3.3 Zero Sum
- USACO 2.3.3 Zero Sum
- USACO 2.3 Zero Sum 题解
- USACO-Section 2.3 Zero Sum(枚举)
- 【其他】【USACO】Zero Sum
- usaco-zero sum
- usaco: Zero Sum
- USACO Zero Sum
- usaco Zero Sum
- USACO:Zero Sum
- USACO-Zero Sum
- 按模糊查询条件排序
- 下一个大数的问题
- JMS规范,ActiveMQ消息中间件
- do {...} while(0) 在宏定义中的作用
- 算法设计与分析(8)-- Container With Most Water(难度:Medium)
- USACO 2.3 Zero Sum
- unity 通过点击游戏小地图,来移动主相机功能实现
- 【C#】读取*.ini文件
- 合并任意个数组生成一个新的数组
- c 查看struct各字段的偏移值
- -----hdu 2553 N皇后问题
- Batch Normalization
- 忙 茫 盲
- jvm优化及调优