零的数列 Zero Sum
来源:互联网 发布:mac口红dangerous 编辑:程序博客网 时间:2024/05/21 09:25
题目描述
请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。 现在请在数列中插入“+”表示加,或者“-”表示减,“ ”表示空白(例如1-2 3就等于1-23),来将每一对数字组合在一起(请不要在第一个数字前插入符号)。 计算该表达式的结果并判断其值是否为0。 请你写一个程序找出所有产生和为零的长度为N的数列。
输入输出格式
输入格式:单独的一行表示整数N (3 <= N <= 9)。
输出格式:按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到结果为零的数列。
输入输出样例
输入样例#1:
7
输出样例#1:
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
说明
翻译来自NOCOW
USACO 2.3
【题解】
我的思路是先无序生成,接着排序。
/* ID:luojiny1 LANG:C++ TASK:zerosum */ #include<cstdio> #include<string> #include<algorithm> using namespace std; string s[50];//答案 int N,m=0,ans=0, num[10],connect[10];// ans为答案个数,num表示目前生成的数字序列,connect是每个数字之间的符号 void dfs(int step,int sum) { if(step>=N+1){ if(sum==0) { for(int i=0;i<m;i++) { if(i) s[ans]+=(connect[i]==1?'+':'-'); char a=num[i]/10+'0',b=num[i]%10+'0'; if(num[i]>10) s[ans]=s[ans]+a+' '+b; else s[ans]+=b; } ans++; } return ; } num[m]=0; for(int i=step;i<=step+1&&i<=N;i++)//很明显最多能连续两个数,否则会大于100。 { num[m]=num[m]*10+i; connect[m++]=1; dfs(i+1,sum+num[m-1]); connect[m-1]=0; if(step!=1) dfs(i+1,sum-num[m-1]); m--; } } int main() { //freopen("zerosum.in","r",stdin); //freopen("zerosum.out","w",stdout); scanf("%d",&N); dfs(1,0); sort(s,s+ans); for(int i=0;i<ans;i++)printf("%s\n",s[i].c_str()); return 0; }
阅读全文
0 0
- 零的数列 Zero Sum
- 洛谷 P1473 零的数列 Zero Sum
- 【搜索】洛谷 P1473 零的数列 Zero Sum
- 零和博弈 zero-sum game
- usaco ★Zero Sum 和为零
- 零的数列
- 【USACO题库】2.3.3 Zero Sum和为零
- 【USACO题库】2.3.3 Zero Sum和为零
- JZOJ1268.【USACO题库】2.3.3 Zero Sum和为零
- 1031. 【USACO题库】2.3.3 Zero Sum和为零
- Linux的零拷贝技术(zero-copy)
- Zero Sum
- Zero Sum
- 零容忍 zero tolerance
- zero-copy零拷贝
- 【USACO题库】2.3.3 Zero Sum和为零(深搜+模拟)
- 对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
- 【其他】【USACO】Zero Sum
- 【bzoj1725】[Usaco2006 Nov]Corn Fields牧场的安排
- JUC原子类-05之 AtomicLongFieldUpdater原子类
- 挑战程序竞赛系列(24):3.5最大流与最小割
- WebSocket基础使用
- ubuntu安装Theano库与Tensorflow
- 零的数列 Zero Sum
- AS中报Gradle 3.3 requires Java 7 or later to run.You are currently using Java 6.解决办法
- leetcode[Add Strings]//待整理多种解法
- css学习笔记之line-height
- 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- this的指向问题
- CSS选择器
- 对于webSocket的学习及原理了解
- HDU 1598 find the most comfortable road 贪心+并查集