【搜索】洛谷 P1473 零的数列 Zero Sum
2017-05-12 14:43
351 查看
题目描述
请考虑一个由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+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
说明
翻译来自NOCOWUSACO 2.3
代码
#include<iostream> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,num[15],calc[15]; char c[4]={'@',' ','+','-'},fv[15]; void read(int &x) { x=0; char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9') { x=x*10+c-'0'; c=getchar(); } } bool judge() { int end=1; for(int i=1;i<=n;++i) { calc[end]=num[i]; if(fv[i-1]==' ') { int temp=calc[end-1]*10+calc[end]; end--; calc[end]=temp; } end++; } end--; // cout<<end<<endl; // for(int i=1;i<=end;++i)cout<<calc[i]<<' '; // cout<<endl; // system("PAUSE"); // for(int i=1;i<n;++i)cout<<fv[i]; // system("PAUSE"); int pos=1; for(int i=2;i<=n;i++) { if(fv[i-1]=='+') { int temp=calc[pos]+calc[pos+1]; // cout<<calc[end-1]<<'+'<<calc[end]<<'='<<temp<<endl; // system("PAUSE"); pos++; calc[pos]=temp; } else if(fv[i-1]=='-') { int temp=calc[pos]-calc[pos+1]; // cout<<calc[end-1]<<'-'<<calc[end]<<'='<<temp<<endl; // system("PAUSE"); pos++; calc[pos]=temp; } } if(calc[pos]==0)return true; return false; } void print() { for(int i=1;i<=n;++i) { cout<<num[i]; if(i!=n)cout<<fv[i]; } cout<<endl; } void search(int pos) { if(pos==n) { if(judge())print(); return ; } for(register int i=1;i<=3;++i) { fv[pos]=c[i]; search(pos+1); } } int main() { read(n); for(register int i=1;i<=n;++i)num[i]=i; search(1); return 0; }
相关文章推荐
- 洛谷 P1473 零的数列 Zero Sum
- 洛谷P1473 零的数列 Zero Sum
- 洛谷 P1062 数列[解法一:搜索]
- C数列 vijos P1350 IDS 搜索
- 洛谷-数独-搜索与回溯
- 【搜索】洛谷 P1092 虫食算
- 【数论】洛谷 P1062 数列
- 【搜索】洛谷 P1164 小A点菜
- 动规-洛谷P1415 拆分数列
- 引水入城_洛谷1514_搜索 + dp
- 油滴扩展_洛谷1378_搜索
- 【洛谷】1466 集合 Subset Sums 折半搜索
- 【搜索+枚举+数学思维】洛谷P1286 两数之和
- 洛谷 1441 砝码称重 搜索+DP 解题报告
- 洛谷1349 广义斐波那契数列 【矩阵乘法】
- 【洛谷1349】广义斐波那契数列
- 洛谷:P1182:数列分段`Section II`
- 数列 洛谷p1062
- 【日常学习】【搜索/排序+字符串】洛谷1012/1107 最大整数题解
- |洛谷|NOIP2004|搜索|P1092 虫食算