算法题 趣味算式110

public class 趣味算式110 {
	public static void main(String[] args) {
		char[] cs = new char[17];
		for (int i = 0; i != 9; ++i) {
			cs[2 * i] = (char) (i + 1 + '0');
		}
		// System.out.println(cs);
		 calString(cs, 1);
	}
	static int n = 0;
	public static void calString(char[] s, int pos) { // 插空位置为 1 3 5 7 9 11 13
														// 15共八个
		if (pos == 15 + 2) { // 此时插空完毕
//			try {
//				FileWriter out = new FileWriter("d:\\1.txt", true);
//				out.write(s.toString() + " ");
//				out.close();
//			} catch (FileNotFoundException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			} catch (IOException e) {
//				// TODO Auto-generated catch block
//				e.printStackTrace();
//			}
//			n++;
			calResult(new String(s));
			return;
		}

		for (int i = 0; i != 3; ++i) { // i的0 1 2 分别代表 空 加 减
			switch (i) {
			case 0:
				s[pos] = ' ';
				break;
			case 1:
				s[pos] = '+';
				break;
			case 2:
				s[pos] = '-';
				break;
			}
			calString(s, pos + 2);
		}

	}
	
	static void calResult(String s) {
		if (s.equals(""))
			return;
		s = s.replaceAll(" ", "");
		String data = s;
		String[] ss = s.split("[^0-9]");
		int sum = Integer.parseInt(ss[0]);
		for (int i = 0; i != ss.length - 1; ++i) {
			char op = s.charAt(ss[i].length());
			if (op == '+') {
				sum += Integer.parseInt(ss[i + 1]);
			} else {
				sum -= Integer.parseInt(ss[i + 1]);
			}
			s = s.substring(ss[i].length() + 1);
		}
		if (sum == 100) {
			System.out.println(data + "=100");
		}
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值