用1,2,3,4,5,6,7,8,9利用9宫格加减乘除等于4发算出的结果是0?

1、2、3、4、5、6、7、8、9用这9个数字,运用加减乘除法不变顺序,使其结果等于0有几种算法,可以 用括号?请把算式列出来.
如果可以用括号,那么几乎有无数种.(1+2-3)*(~)后面随意搞了.所以,应该是不能用括号的.于是,问题就简单里,由于输入数字比较少,用一个简单的 遍历就结束了.4的8次方,即2的16次方次计算就o了.即,大约计算64K次.对于计算机来说,应该是不到1秒.算法比较简单,就是遍历,每次将表达式的各个字符压入栈中,然后取出计算.在此不赘述.可以参考数据结构栈操作中的数学表达式这一块.
为您推荐:
其他类似问题
可以把算式列出来吗?谢谢?
前面是0*什么都是0了
[1+2+3-6]*7\8*9=0
Angel smile
扫描下载二维码钟面上有1,2,3,4,5,6,7,8,9,10,11,12共12个数字(1)能否利用这些数字(每个数字用一次,且全部用上)组成加减算式(允许在第一个数字前加负号),使它的计算结果为0?这样的算式有几个?全部写出.(2)能否改变钟面上的数,比如只剩下6个偶数,扔按(1)的要求来做(3)在解上述各题的过程中,能总结一些什么数学规律?
娃娃_WezA9
(1)1+2+3+4+5+6+7+8+9+10+11+12=78要想使它的计算结果为0,只需要78的一半为正,一半为负,这样的算式有很多,如:1+2+3+4+5+6+7-8-9-10+11-12=01+2+3-4+5-6+7-8-9+10+11-12=0……………(2)2+4+6+8+10+12=42要想使它的计算结果为0,只需要42的一半为正,一半为负,但42的一半是21,是个奇数,题中的数都是偶数,所以,不能(3)它的规律是把所有的数加起来,求出他们的和,使其中的一半为正,一半为负
为您推荐:
其他类似问题
1+12=2+11=3+10=4+9=5+8=6+7=13将这12个数按以上方法分成6组,这6组数中3项取正,3项取负,共有20种取法,这样就有20个算式了!还没计算别的分组方法呢!“全部写出”不是要泪死的?
扫描下载二维码1 2 3 4 5 6 7 8 9 用加减得90_百度知道
1 2 3 4 5 6 7 8 9 用加减得90
12+3+4+5-6-7+89=100
是100再来一个1+2+3-4+5+6+78+9=100
来自团队:
其他类似问题
为您推荐:
其他3条回答
全部加起来都不到90你做出来我是你儿子
除非可以组合( •ิ_• ิ)
请问现货原油投资怎么才能看准行情的方向?现货原油怎么才能看准行情的方向,带我的老湿告诉我,在一段时间内跟随着趋势就行,就像我们经常说的顺势,如果说一段时间内看不出来的话,那就换一个大的周期来看,趋势是时间越久越是稳定的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁5140人阅读
Java开发(6)
数据结构&算法(3)
算法思路:在数字1-9之间可以有8个操作符,没个操作符可以是:空、加、减、乘、除,分别用数字0-5表示,用随机函数生成8个操作符,计算9个操作数和8个操作符的结果,如果结果为100(考虑乘除法带来的误差,误差范围0.01),输出结果(去除重复,操作数用float型保证除法时数据不会丢失);源码如下:
public class RandomCalculator {
float num[] = {1,2,3,4,5,6,7,8,9};
int a[] = new int[8];
int size = 8;
* @param args
public static void main(String[] args) {
int count = 0; // 有效解的个数
String strs[] = new String[1000]; // 存储有效解
S // 当前有效解
for(int n = 0; n & 0xFFFFFFF; n++){
rc = new RandomCalculator();
// 获取操作符合
rc.getOperator(rc.a);
// 操作符转换表示
str = rc.getFunStr();
// 处理空操作符
for(i = 0; i & rc. i++){
if(rc.a[i] == 0){
rc.dealOperator(i,rc.a[i]);
// 处理乘除法
for(i = 0; i & rc. i++){
if(rc.a[i] &= 3){
rc.dealOperator(i,rc.a[i]);
// 处理加减法
for(i = 0; i & rc. i++){
rc.dealOperator(i,rc.a[i]);
if(notExist(strs,str)&&99.990&rc.num[0]&&rc.num[0]&100.001){
strs[count++] = // 记录已经出现的
System.out.print(&\n& + count + &:& + str + &=100\n&);
private static boolean notExist(String[] strs, String str) {
for(int i = 0; i & strs. i++){
if(null != strs[i] && strs[i].equals(str))
// 获取操作符
void getOperator(int a[]){
// 生成八个操作符,0表示没有,1表示加,2表示减,3表示乘,4表示除
for(int i = 0; i & 8; i++)
a[i] = (int)Math.floor(Math.random()*5);
a[i] = (int)Math.floor(Math.random()*4) + 1; // 不包含空操作符的情况
// 处理操作符
public void dealOperator(int n, int i){
switch(i){
case 0: // 无符号
num[n] = num[n]*10 + num[n+1];
case 1: // 加法
num[n] += num[n+1];
case 2: // 减法
num[n] -= num[n+1];
case 3: // 乘法
num[n] *= num[n+1];
case 4: // 除法
num[n] /= num[n+1];
for(int j = n+1; j & j++){
num[j] = num[j+1];
a[j-1] = a[j];
public String getFunStr(){
String str = &&;
for(i = 0; i & i++){
switch(a[i]){
str += (int)num[i];
str += (int)num[i] + &+&;
str += (int)num[i] + &-&;
str += (int)num[i] + &*&;
str += (int)num[i] + &/&;
str += (int)num[i];
程序运行结果:1:1-2*3+4*5+6+7+8*9=100
2:1-2+3*4*5+6*7+8-9=100
3:1*2*3*4+5+6+7*8+9=100
4:1-2*3-4+5*6+7+8*9=100
5:1*2*3*4+5+6-7+8*9=100
6:1+2*3+4*5-6+7+8*9=100
7:1*2*3+4+5+6+7+8*9=100
8:1-2*3-4-5+6*7+8*9=100
9:1-2+3*4*5-6+7*8-9=100
10:1+2+3+4+5+6+7+8*9=100
11:1+2-3*4+5*6+7+8*9=100
12:1+2+3-4*5+6*7+8*9=100
13:1+2*3*4*5/6+7+8*9=100
14:1*2*3-4*5+6*7+8*9=100
15:1+2-3*4-5+6*7+8*9=100有空操作符的时候结果为:1:1*2+3+4*5+6+78-9=100
2:1+2+3+4+5+6+7+8*9=100
3:1+23*4+5-6+7-8+9=100
4:1-2-34+56+7+8*9=100
5:1+2+34-5+67-8+9=100
6:12+3+4+5-6-7+89=100
7:1+23*4-5+6+7+8-9=100
8:1*2+34+56+7-8+9=100
9:1+2+3-4*5+6*7+8*9=100
10:1-2-3+45-6-7+8*9=100
11:1+2-3*4+5*6+7+8*9=100
12:1*23-4+5-6-7+89=100
13:1*2+34+5-6-7+8*9=100
14:1+2*3+4*5-6+7+8*9=100
15:1+234*5/6-7-89=100
16:12-3-4+5*6+7*8+9=100
17:1+2*3+4+5+67+8+9=100
18:1+2+3*4*56/7-8+9=100
19:1*2*3*4+5+6+7*8+9=100
20:1*2+34-56/7+8*9=100
21:12+3+4-56/7+89=100
22:1+23-4+56+7+8+9=100
23:12+3*4+5+6+7*8+9=100
24:1+2*34-56+78+9=100
25:123+4*5-6*7+8-9=100
26:1-2*3-4+5*6+7+8*9=100
27:12+3*45+6*7-89=100
28:12/3+4*5-6-7+89=100
29:123+45-67+8-9=100
30:1*2-3+4*5-6+78+9=100
31:1*2*3*4+5+6-7+8*9=100
32:1*2+3-4+5*6+78-9=100
33:1*2*3*4-5-6+78+9=100
34:1*2/3+4*5/6+7+89=100
35:1+2+3*4*5/6+78+9=100
36:1+2-3*4-5+6*7+8*9=100
37:1*2-3+4+56/7+89=100
38:123-4-5-6-7+8-9=100
39:1*23*4-56/7/8+9=100
40:1*2*3+4+5+6+7+8*9=100
41:1-2*3+4*5+6+7+8*9=100
42:1+2*3-4-5+6+7+89=100
43:12+34-5-6-7+8*9=100
44:1+23-4-5+6+7+8*9=100
45:12+34-5-6+7*8+9=100
46:1-23+4*5+6+7+89=100
47:12-3+4*5+6-7+8*9=100
48:12*3-4*5+67+8+9=100
49:12-3+4*5+6+7*8+9=100
50:12+3*4-5-6+78+9=100
51:12+34-5+6*7+8+9=100
52:12+3-4+5+67+8+9=100
53:1*2+34+5+6*7+8+9=100
54:1+2+34*5+6-7-8*9=100
55:1*23+4+5+67-8+9=100
56:1-2-3+4*5+67+8+9=100
57:1/2*3/4*56+7+8*9=100
58:1+2+3-45+67+8*9=100
59:1+2*3-4+56/7+89=100
60:12*3-4+5-6+78-9=100
61:1-2-3+4*56/7+8*9=100
62:12-3/4/5-6/7+89=100
63:12/3/4+5*6+78-9=100
64:1*2*3-4*5+6*7+8*9=100
65:1*2*34+56-7-8-9=100
66:1+23*4+56/7+8-9=100
67:1-2-3+45+6*7+8+9=100
68:1+234*5*6/78+9=100
69:12-3-4+5*6-7+8*9=100
70:1*2-3+4-5+6+7+89=100
71:1+2+3*4-5-6+7+89=100
72:1*2*3-4+5+6+78+9=100
73:12+3*4+5+6-7+8*9=100
74:1+234-56-7-8*9=100
75:1-23-4+5*6+7+89=100
76:1+2*3*4*5/6+7+8*9=100
77:1-2*3-4-5+6*7+8*9=100
78:12-3-4+5-6+7+89=100
79:1-2-3+45-6+7*8+9=100
80:1+23-4+56/7+8*9=100
81:12+34+5*6+7+8+9=100
82:1-2+3+45+6+7*8-9=100
83:1-2+3*4*5+6*7+8-9=100
84:1*2+3+45+67-8-9=100
85:123-45-67+89=100
86:1+2+3-4+5+6+78+9=100
87:123+4-5+67-89=100
88:12*3-4-5-6+7+8*9=100
89:1-2+3*4*5-6+7*8-9=100
90:1*23+4+56/7*8+9=100
91:12/3+4*5*6*7/8-9=100
92:1*23-4-56/7+89=100
93:12/3+4*5*6-7-8-9=100
94:1/2/3*456+7+8+9=100
95:1+23-4+5+6+78-9=100
96:1*2*3-45+67+8*9=100
97:1*2+3*4+5-6+78+9=100
98:1-23-4-5+6*7+89=100
99:1*234+5-67-8*9=100
100:1-2+3*4+5+67+8+9=100
101:1*2+34+5-6+7*8+9=100
102:1/2*34-5+6-7+89=100&讨论:1)此算法用随机函数,没有考虑算法时间复杂度,运行很占CPU(只为求出结果),有时间改进一下。2)在9 8 7 6 5 4 3 2 1中间加上加减乘除,使得结果等于一个数,只需要修改初始值和判断结果。3)Java实现。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40823次
排名:千里之外
原创:12篇
评论:15条1,2,3,4,5,6,7,8,9,0这几个数字用一次加减乘除=54321? ps:数字可以组合,不分前后
1星宇TA352
嵌套括号很多, 大括号以后全用大括号表示了{{[(6x7)-1]
x5 -2 } x89
为您推荐:
扫描下载二维码

我要回帖

更多关于 9宫格加减乘除等于4 的文章

 

随机推荐