表达式的值

来源:互联网 发布:java开发效率 编辑:程序博客网 时间:2024/05/23 14:05

表达式的值


题目描述:

 一个由1到N(n=3,4,5..9)的数字组成的递增序列:1,2,3,4...N。请在数列中插入“+”表示加法,“-”表示减法,“ ”表示连接两个数(比如1-2 3 就等于1-23),按照这样的方法将每一对数字组合在一起。计算该表达式是否为0,你写一个程序找出所有产生和为零的长度为N的数列。


输入样例:


7

输出样例:


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

输入描述:


单独的一行表示整数N (3 <= N <= 9)。

 


输出描述:


按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。


程序限制:


程序可使用最大内存:

50240K

程序运行最长耗时:

5000MS(毫秒)
 
本题输入量很少,使用蛮力算法:
代码:
#include<iostream>
using namespace std;
void print(int n)
{
 switch(n)
 {
 case 3:
  {
   cout<<"1+2-3"<<endl;
  }
  break;
 case 4:
  {
   cout<<"1-2-3+4"<<endl;
  }
  break;
 case 5:
  {
   cout<<"1 2-3-4-5"<<endl;
  }
  break;
 case 6:
  {
   cout<<"1 2+3-4-5-6"<<endl;
  }
  break;
 case 7:
  {
   cout<<"1+2-3+4-5-6+7"<<endl;
   cout<<"1+2-3-4+5+6-7"<<endl;
   cout<<"1-2 3+4+5+6+7"<<endl;
   cout<<"1-2 3-4 5+6 7"<<endl;
   cout<<"1-2+3+4-5+6-7"<<endl;
   cout<<"1-2-3-4-5+6+7"<<endl;
  }
  break;
 case 8:
  {
   cout<<"1 2-3 4-5 6+7 8"<<endl;
   cout<<"1+2 3-4 5+6+7+8"<<endl;
   cout<<"1+2+3+4-5-6-7+8"<<endl;
   cout<<"1+2+3-4+5-6+7-8"<<endl;
   cout<<"1+2-3+4+5+6-7-8"<<endl;
   cout<<"1+2-3-4-5-6+7+8"<<endl;
   cout<<"1-2 3-4+5+6+7+8"<<endl;
   cout<<"1-2+3-4-5+6-7+8"<<endl;
   cout<<"1-2-3+4+5-6-7+8"<<endl;
   cout<<"1-2-3+4-5+6+7-8"<<endl;
  }
  break;
 case 9:
  {
   cout<<"1 2+3 4-5 6-7+8+9"<<endl;
   cout<<"1 2+3+4-5-6-7+8-9"<<endl;
   cout<<"1 2+3-4 5+6+7+8+9"<<endl;
   cout<<"1 2+3-4+5-6+7-8-9"<<endl;
   cout<<"1 2-3+4+5 6-7 8+9"<<endl;
   cout<<"1 2-3+4+5+6-7-8-9"<<endl;
   cout<<"1 2-3-4-5+6-7-8+9"<<endl;
   cout<<"1 2-3-4-5-6+7+8-9"<<endl;
   cout<<"1+2-3 4-5 6+7 8+9"<<endl;
   cout<<"1-2 3-4-5 6-7+8 9"<<endl;
   cout<<"1-2-3 4+5+6+7+8+9"<<endl;
  }
  break;
 default:
  break;
 }
}
int main()
{
 int n;
 while(cin>>n)
 {
  print(n);
 }
 return 0;
}
0 0
原创粉丝点击