1.2.3.4.5.6.7.8.9添3个符号3.4尺等于多少厘米100

1 2 3 4 5 6 7 8 9=100添上符号后几个数字合成一个数拜托了各位
1+2+34-5+67-8+9=100 12+3-4+5+67+8+9=100 123-4-5-6-7+8-9=100 123+4-5+67-89=100 123+45-67+8-9=100 123-45-67+89=100 12-3-4+5-6+7+89=100 12+3+4+5-6-7+89=100 1+23-4+5+6+78-9=100
为您推荐:
其他类似问题
扫描下载二维码8084人阅读
数据结构(3)
一共有3^8种可能。
成功:12+34+56+7-8+9 = 110
成功:12+3+45+67-8-9 = 110
成功:12-3+4-5+6+7+89 = 110
成功:1+2+34+5+67-8+9 = 110
成功:1-2+3+45-6+78-9 = 110
成功:123+4-5-6-7-8+9 = 110
成功:123-4+5-6-7+8-9 = 110
成功:123-4-5+6+7-8-9 = 110
成功:123+4+5+67-89 = 110
成功:1+234-56-78+9 = 110
两种方法:
* Copyright (C) 2012 Lear C
* 1 2 3 4 5 6 7 8 9 = 110
* 在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。 &br/&
* 一种更好的方法是:&br/&
* 每一个空隙之间都有三种可能,&+&, &-&, &&,所以一共有3^8种可能。
* @author Lear
public class Tester2 {
private static final char[] NUMBERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
private static final String[] OPERATORS = {&+&, &-&, &&};
private static final int RESULT = 110;
// 计算结果
public static void main(String[] args) {
sortAndCompute(0, &&);
private static void sortAndCompute(int numIndex, String buffer) {
// 说明到最后一个字符了
if(numIndex == NUMBERS.length - 1) {
buffer += NUMBERS[numIndex];
String formula = buffer.toString();
if(sum(formula) == RESULT) {
System.out.println(formula + & = & + RESULT);
for(int operIndex = 0; operIndex & OPERATORS. ++operIndex) {
buffer += NUMBERS[numIndex];
buffer += OPERATORS[operIndex];
sortAndCompute(numIndex + 1, buffer);
// 消除前面两个已经添加的字符恢复原状,以便下一次循环的叠加
// 但是当中间连接符变为''的时候,则只删除buffer中的前面一个字符
buffer = operIndex != 2 ? buffer.substring(0, buffer.length() - 2)
: buffer.substring(0, buffer.length() - 1);
private static int sum(String formula) {
if(formula == null || formula.trim().length() == 0)
throw new IllegalArgumentException(&formula is invalid!&);
Stack&String& numStack = new Stack&String&();
Stack&String& operStack = new Stack&String&();
StringBuffer numBuffer = new StringBuffer();
formula += &#&; // 添加一个结束符到公式末尾便于计算
char[] chs = formula.toCharArray();
for(int index = 0; index & formula.length(); ++index) {
if(chs[index] != '+' && chs[index] != '-' && chs[index] != '#') {
numBuffer.append(chs[index]);
numStack.push(numBuffer.toString());
numBuffer.delete(0, numBuffer.length());
if(operStack.isEmpty()) operStack.push(chs[index] + &&);
int numAft = Integer.parseInt(numStack.pop());
int numBef = Integer.parseInt(numStack.pop());
String oper = operStack.pop();
int sum = oper.equals(&+&) ? numBef + numAft : numBef - numA
numStack.push(sum + &&);
operStack.push(chs[index] + &&);
return Integer.parseInt(numStack.pop());
import java.util.ArrayL
import java.util.C
import java.util.L
* 1 2 3 4 5 6 7 8 9 = 110
* 在数字间填入加号或者减号(可以不填,但不能填入其它符号)使等式成立。
* @author Lear
public class Tester {
private static final char[] NUMBERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9'/**/};
private static final int RESULT = 110; // 计算结果
public static void main(String[] args) {
List&List&String&& all = sort(NUMBERS);
testPrint(all);
for(List&String& aRank : all) {
printEstablishEquation(aRank);
private static void testPrint(List&List&String&& all) {
for(List&String& aRank : all) {
System.out.println(aRank);
* 按nums的顺序进行排列组合,最后返回一个List数组,它将包含所有的可能的一个由一列数据的List数组。
* 此为一个递归函数,第一个的组合数字后面的字符都将继续调用此函数以计算出List&List&String&&.&br/&
* 缺点:数据量增大时,将导致内存溢出,而且算法的效率低下
* @param nums
* @return 格式:[[1,2,3,4..],[12,3,4,..],[12,34,...],....]
private static List&List&String&& sort(char[] nums) {
if(nums.length == 0) return Collections.emptyList();
List&List&String&& all = new ArrayList&List&String&&();
// 字符数组直接加入此List中
List&String& firstRank = new ArrayList&String&();
for(int i = 0; i & nums. ++i) {
firstRank.add(nums[i] + &&);
all.add(firstRank);
// 组合数字的个数,如:1,2,3,4.... ; 12,3,4,5.. ; 123,4,5.. ; 1234.5 ...
for(int combinationNum = 2; combinationNum &= nums. ++combinationNum) {
// 此组合的偏移量,如:12,3.... ; 1,23,4....; 1,2,34,...
for(int offset = 0; offset & nums.length - (combinationNum - 1); ++offset) {
List&String& preRank = new ArrayList&String&();
StringBuilder buffer = new StringBuilder();
for(int i = 0; i & ++i) { // 前
preRank.add(nums[i] + &&);
for(int i = i & offset + combinationN ++i) { // 中
buffer.append(nums[i]);
preRank.add(buffer.toString());
// 获取后面的字符数组,然后递归组合
char[] suffix = new char[nums.length - (offset + combinationNum)];
for(int i = offset + combinationNum, index = 0; i & nums. ++i, ++index) { // 后
suffix[index] = nums[i];
// 例如:12组合的后面 [[3,4,5,6,7...],[34,5,6...],[345...]]
List&List&String&& sufArray = sort(suffix);
// 为里面的所有List&String&添加前面的数字组合,
// 例如:添加12到上面的例子中,使之成为[[12,3,4,...],[12,34...]....]
if(sufArray.size() != 0)
for(List&String& sufRank : sufArray) {
// 组合前后的List
List&String& allRank = new ArrayList&String&();
for(int i = 0; i & preRank.size(); ++i) allRank.add(preRank.get(i));
for(int i = 0; i & sufRank.size(); ++i) allRank.add(sufRank.get(i));
// 添加到all中去
all.add(allRank);
all.add(preRank); // 说明到末尾了
private static void printEstablishEquation(List&String& ls) {
char[] operators = {'+', '-'};
StringBuilder buff = new StringBuilder();
// 转换为数字
int[] nums = new int[ls.size()];
for(int i = 0; i & ls.size(); ++i) {
nums[i] = Integer.parseInt(ls.get(i));
// 对应的操作符是否变化的数组
boolean[] isOperChanges = new boolean[nums.length - 1];
// 计算每一个isOperChange的变化周期
int[] perOperChangeCounts = new int[isOperChanges.length];
for(int index = 0; index & isOperChanges. ++index) {
perOperChangeCounts[index] = (int) Math.pow(2, index);
// 可能性的计算次数 2^(nums.length - 1)
int computeCount = (int) Math.pow(2, nums.length -1);
for(int i = 1; i &= computeC ++i) {
// 迭代计算
int sum = nums[0];
buff.append(nums[0]);
for(int index = 0; index & nums.length - 1; ++index) {
sum = isOperChanges[index] ? sum - nums[index + 1] : sum + nums[index + 1];
buff.append(isOperChanges[index] ? operators[1] : operators[0]);
buff.append(nums[index + 1]);
if(sum == RESULT) // 输出等式成立的表达式
System.out.println(&成功:& + buff.toString() + & = & + sum);
System.out.println(&失败:&
+ buff.toString() + & = & + sum);
buff.delete(0, buff.length());
// 操作符交替变化数组的迭代计算。
// 第1操作符,每次交替变化;第2操作符,i每 2^2次变化一次;第3操作符,i每2^3次变化一次
for(int index = 0; index & isOperChanges. ++index) {
if(i % perOperChangeCounts[index] == 0)
isOperChanges[index] = !isOperChanges[index]; // 交替
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:159541次
积分:2249
积分:2249
排名:第11567名
原创:54篇
转载:62篇
评论:14条
(2)(6)(2)(1)(6)(2)(4)(1)(1)(1)(3)(1)(4)(1)(2)(2)(9)(5)(4)(20)(20)(12)(9)在5 4 9 6 3这五个数之间添上运算符号及括号使算式分别等于1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;
2*3+6-7-4=1 2+3-6+7-4=2 2*3-6+7-4=3 2-3-6+7+4=4 (2-3)*6+7+4=5 -2+3-6+7+4=6 2/3*6*7/4=7 2*3*6-7*4=8 (-2+3)*(6+7)-4=9 -2*(3+6)+7*4=10 2*3-6+7+4=11 -2-3+6+7+4=12 -2+3*(-6+7+4)=13 2*(3*6-7-4)=14 (2-3+6)*(7-4)=15 (2+3+6-7)*4=16 2+3*(-6+7+4)=17 2+(3-6+7)*4=18 (2+3)*6-7-4=19 (2*3+6-7)*4=20 (2*3+6)*7/4=21 2+3+6+7+4=22 2+3*6+7-4=23 (2+3-6+7)*4=24
为您推荐:
其他类似问题
5-4+9-6-3;(5+4-9)+6/3;(5+4-9)+6-3;(5+4)/9+6-3;......
(2+3)*(7-6+4)=25 2*(6+7)*(4-3)=26 2*(6+7)+4-3=27 (6/2+4)*3+7=28 (3+6)*2+7+4=29 (4+6)*2+3+7=30 (2+4)*7-6-3=31 (2+4)*6-7+3=32 6*7/2+3*4=33 (4*7+6)*(3-2)=34 <...
扫描下载二维码1 2 3 4 5 6 7 8 9 =100加上运算符号使算式成立
愁绪牵扯伤悲2a
1+2+34-5+67-8+9=100 12+3-4+5+67+8+9=100 123-4-5-6-7+8-9=100 123+4-5+67-89=100 123+45-67+8-9=100 123-45-67+89=100 12-3-4+5-6+7+89=100 12+3+4+5-6-7+89=100 1+23-4+5+6+78-9=100 1+23-4+56+7+8+9=100 1+2+3-4+5+6+78+9=100
为您推荐:
其他类似问题
1+2+3+4+5+6+7+8×9=100
1+2+3+4+5+6+7+8*9=100应该是这样吧。
扫描下载二维码1+2+3+4+5+6+7+8+9=100改动一个运算符号,使等式成立。_百度知道
1+2+3+4+5+6+7+8+9=100改动一个运算符号,使等式成立。
1+2+3+4+5+6+7+8x9=100------------想-----------100-(1+2+3+4+5+6+7+8+9)=100-45=558x9-(8+9)=72-17=55
来自团队:
其他类似问题
为您推荐:
其他3条回答
1+2+3+4+5+6+7+8×9=100
我觉得直接把 = 改成
就好了╮(╯▽╰)╭
1+2+3+4+5+6+7+8*9=100
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 3.4尺等于多少厘米 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信