等式变换

http://blog.csdn.net/ever223/article/details/45008335

题目描述:

第三题:等式变换

输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。

1 2 3 4 5 6 7 8 9 = X

比如:

12-34+5-67+89 = 5

1+23+4-5+6-7-8-9 = 5

请编写程序,统计满足输入整数的所有整数个数。

输入:       正整数,等式右边的数字

输出:       使该等式成立的个数

样例输入:5

样例输出:21



[java]  view plain  copy
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3. import java.util.Scanner;  
  4.   
  5.   
  6. /** 
  7.  *  
  8.     第三题:等式变换 
  9.     输入一个正整数X,在下面的等式左边的数字之间添加+号或者-号,使得等式成立。 
  10.     1 2 3 4 5 6 7 8 9 = X 
  11.     比如: 
  12.     12-34+5-67+89 = 5 
  13.     1+23+4-5+6-7-8-9 = 5 
  14.     请编写程序,统计满足输入整数的所有整数个数。 
  15.     输入:       正整数,等式右边的数字 
  16.     输出:       使该等式成立的个数 
  17.     样例输入:5 
  18.     样例输出:21 
  19.  * 
  20.  */  
  21.   
  22. //暴力枚举法  
  23. public class EqualX {  
  24.     //存储等式  
  25.     public static List<String> equals = new ArrayList<String>();  
  26.     /** 
  27.      *  
  28.      * @param cur   当前要处理的数 
  29.      * @param x     给定的X值 
  30.      * @param sum   已经累加的值   
  31.      * @param temp  等待累加的值 
  32.      * @param equal 等待累加的等式 
  33.      */  
  34.     public static void equealX(int cur,int x, int sum, int temp, String equal) {  
  35.         if(cur == 10) {  
  36.             if(sum + temp == x)   
  37.                 equals.add(equal + " + " + temp + " = " + x);  
  38.             if(sum - temp == x)  
  39.                 equals.add(equal + " - " + temp + " = " + x);  
  40.             return;  
  41.         }  
  42.         //不加符号  
  43.         equealX(cur + 1, x, sum, temp * 10 + cur, equal);  
  44.         //添加+  
  45.         //注意1前面没有符号  
  46.         if(equal != "")  
  47.             equealX(cur + 1, x, sum + temp, cur, equal + " + " + temp);  
  48.         else  
  49.             equealX(cur + 1, x, sum + temp, cur, equal + temp);  
  50.         //添加-  
  51.         if(equal != "")  
  52.             equealX(cur + 1, x, sum - temp, cur, equal + " - " + temp);  
  53.     }  
  54.     public static void main(String[] args) {  
  55.         Scanner in = new Scanner(System.in);  
  56.         equealX(2, in.nextInt(), 01"");  
  57.         System.out.println(equals.size());  
  58.         for (int i = 0; i < equals.size(); i++) {  
  59.             System.out.println(equals.get(i));  
  60.         }  
  61.     }  
  62. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值