编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。

来源:互联网 发布:淘宝 5元红包 买什么 编辑:程序博客网 时间:2024/06/06 15:42
public class Test5{public static void main(String[] args){/*编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性。例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 100。*/show();}public static void show(){int qian=0,hou=0;//定义运算符连接的两个数分别为qian,houint ysf=0;//表示运算符int qh=0;//标记当前的位置,是qian还是hou  0为qian 1为houint total=0;//算式结果int[] suan={0,0,0,0,0,0,0,0};////8个可能的运算符插入位,0表没有,1表加法,2表减法for(suan[0]=0; suan[0]<3; suan[0]++)//1 2间的运算符for(suan[1]=0; suan[1]<3; suan[1]++)//2 3间的运算符for(suan[2]=0; suan[2]<3; suan[2]++)//3 4间的运算符for(suan[3]=0; suan[3]<3; suan[3]++)//4 5间的运算符for(suan[4]=0; suan[4]<3; suan[4]++)//5 6间的运算符for(suan[5]=0; suan[5]<3; suan[5]++)//6 7间的运算符for(suan[6]=0; suan[6]<3; suan[6]++)//7 8间的运算符for(suan[7]=0; suan[7]<3; suan[7]++){//8 9间的运算符//重置qian=1;//第一个数ysf=0;qh=0;total=0;//开始运算for(int i=0;i<8;i++){//无运算符if(suan[i]==0){if(qh==0){qian=qian*10+(i+2);}elsehou=hou*10+(i+2);}//遇到了新运算符else{//完成前一运算符的结果,结果为qian,依然取houif(qh==1){total=qian+ysf*hou;qian=total;hou=i+2;}else{qh=1;hou=i+2;}//更新运算符if(suan[i]==1){ysf=1;}else{ysf=-1;}}}//完成最后一个运算total=qian+ysf*hou;//输出if(total==100){for(int i=0;i<9;i++){System.out.print(i+1);if(i<8&&suan[i]==1)System.out.print("+");if(i<8&&suan[i]==2)System.out.print("-");}System.out.println("="+total);}}}}

                                             
1 0
原创粉丝点击