计蒜客-组合运算式
来源:互联网 发布:淘宝爆款广告语 编辑:程序博客网 时间:2024/05/16 19:02
请考虑一个被空格分隔的,由1到N的整数组成的递增数列:1 2 3 … N。现在请在数列中插入表示加的“+”,或者表示减“-”,亦或者表示空白的“ ”(例如1-2 3就等于1-23),来将每一对数字组合成一个表达式(第一个数字前无空格)。计算该表达式的结果并判断其值是否为0。请你写一个程序找出所有产生和为零的长度为N的数列。
输入为一行,包含一个整数N(3≤N≤9)。
输出为所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列,并按照字典(ASCII码)序排列。
样例输入
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
1-2-3-4-5+6+7
#include"iostream"#include"vector"using namespace std;vector<char> jj;int n;void dfs(int cur,int sum){ if(cur==n+1) { if(sum==0) { for(int i=0;i<jj.size()-1;i++) { cout<<jj[i]; } cout<<jj[jj.size()-1]<<endl; } return; } if(cur!=n) { int he=sum+cur*10+cur+1; jj.push_back('+'); jj.push_back(cur+'0'); jj.push_back(' '); jj.push_back(cur+1+'0'); dfs(cur+2,he); jj.pop_back();jj.pop_back();jj.pop_back();jj.pop_back(); } int he2=sum+cur; jj.push_back('+'); jj.push_back(cur+'0'); dfs(cur+1,he2); jj.pop_back();jj.pop_back(); if(cur!=n) { int he1=sum-cur*10-cur-1; jj.push_back('-'); jj.push_back(cur+'0'); jj.push_back(' '); jj.push_back(cur+1+'0'); dfs(cur+2,he1); jj.pop_back();jj.pop_back();jj.pop_back();jj.pop_back(); } int he3=sum-cur; jj.push_back('-'); jj.push_back(cur+'0'); dfs(cur+1,he3); jj.pop_back();jj.pop_back(); }int main(){ while(cin>>n) { jj.push_back('1'); jj.push_back(' '); jj.push_back('2'); dfs(3,12); jj.pop_back();jj.pop_back();jj.pop_back(); jj.push_back('1'); dfs(2,1); jj.pop_back(); } return 0;}
dfs,注意题目要求按字典序输出,其中’ ‘> ‘+’ > ‘-‘;
0 0
- 计蒜客 组合运算式
- 计蒜客-组合运算式
- 组合运算式(计蒜客)
- 计蒜课 挑战难题 组合运算式
- 组合运算式(计算客)
- opencv-形态学组合运算
- 加减乘除的组合运算
- 位运算求组合
- 动态组合公式的运算
- 有意思的数字运算组合
- 四则运算之逻辑组合运算
- 产生组合数,位运算
- 位运算求组合,poj2453
- (六十八)组合运算符
- 阶乘、排列,组合的高精度运算
- c#中利用“|”运算组合多项
- AND、OR运算符的组合使用
- 位运算与组合搜索(一)
- C++中的虚表(内存分布)
- golang学习笔记之range
- Socket 网络通讯
- python文件的读写
- Spring框架下使用日志管理
- 计蒜客-组合运算式
- 集合框架
- Codeforces 776D The Door Problem 【并查集】
- 《C陷阱与缺陷》:如何理解(*(void(*)())0)()?
- 解决两个矩阵相乘的好方法
- AndroidStudio 导入HttpClient最简单的方法
- String和StringBuffer的区别
- java术语
- Mac安装tensorflow1.0