您的位置:首页 > 其它

【程序5】填运算符

2015-10-27 16:39 127 查看
[java] view
plaincopy

/*【程序5】

* 在下面的算式中添加上“+、-、*、/”运算符,使等式成立(不使用括号);

* 5 5 5 5 5 = 5

* 1.4 枚举(穷举)算法

* 1.4.3 实例:填运算符

*

由于算术表达式的特殊性,在编程求解这个算式时,需要注意以下几点:

当填入除号时,要求右侧的数不能为0。

乘除的运算级别比加减高。

5 + 5 - 5 * 5 / 5 = 5

*/

import java.util.Scanner;

public class T005 {

public static void main(String[] args){

Scanner scan = new Scanner(System.in);

System.out.print("输入5个数:");

int num[] = new int[5];

for(int i=0;i<5;i++){

num[i] = scan.nextInt();

}

System.out.print("输入结果:");

int result = scan.nextInt();

char[] oper = {'+','-','*','/'};

int count=0; // 计数

int i[] = new int[4]; // 循环用 i[0] i[1] i[2] i[3]

for(i[0]=0;i[0]<4;i[0]++){ // (i=0,1,2,3) 0='+', 1='-', 2='*', 3='/'

if(i[0]<3||num[1]!=0){

for(i[1]=0;i[1]<4;i[1]++){

if(i[1]<3||num[2]!=0){

for(i[2]=0;i[2]<4;i[2]++){

if(i[2]<3||num[3]!=0){

for(i[3]=0;i[3]<4;i[3]++){

if(i[3]<3||num[4]!=0){

float left = 0;

float right = num[0];

int sign = 1; // 正负号

for(int j=0;j<4;j++){

switch(oper[i[j]]){

case '+':

left = left+sign*right;

sign = 1;

right = num[j+1];

break;

case '-':

left = left+sign*right;

sign = -1;

right = num[j+1];

break;

case '*':

right = right * num[j+1];

break;

case '/':

right = right / num[j+1];

break;

}

}

if(left+sign*right == result){

count++;

System.out.print(count+":");

for(int j=0;j<4;j++){

System.out.print(num[j]+""+oper[i[j]]+"");

}

System.out.println(num[4]+"="+result);

}

}

}

}

}

}

}

}

}

if(count==0){

System.out.println("没有符合要求的方法!");

}

}

}

运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: