写程序来解决一道小学数学题
2016-07-31 21:38
453 查看
默默学习编程一年,因故遇到一道小学数学题。心想:“然也,编程用武之地也!”于是博主便打开电脑狂撸一番,遂解决。拿来与同志们一乐。
![](https://img-blog.csdn.net/20160731213936847)
代码如下:
static char[] operator=new char[16];//储存运算符
static int[] number=new int[16];//储存数字
static int[] selected=new int[5];//储存被选出来的数的下标
//此方法用来计算选出来的五个数的计算结果并返回这个结果
题目描述如下:
如图,有带加减乘符号的十六个数,选出其中五个,进行运算,最后结果是一。选出五个后,,会先进行乘法,再进行加减。。。选出的第一个不是乘代码如下:
static char[] operator=new char[16];//储存运算符
static int[] number=new int[16];//储存数字
static int[] selected=new int[5];//储存被选出来的数的下标
public static void main(String[] args) { for(int i=0;i<=15;i++) { if(operator[i]!='*')//保证第一个字符不是乘,题目要求 { for(int j=0;j<=15;j++) for(int k=0;k<=15;k++) for(int l=0;l<=15;l++) for(int m=0;m<=15;m++) { selected[0]=i;//储存选出来的五个下标,用此下标即可在数据数组找到对应的数据 selected[1]=j; selected[2]=k; selected[3]=l; selected[4]=m; initialize(); int end=judge(selected); boolean repetition=false; if(end==1) { repetition=true; //剔除选择了两个同样数的情况 for(int qq=1;qq<5;qq++) { for(int ww=qq;ww>=0;ww--) if(selected[ww]==selected[qq]) repetition=false; } for(int qq=0;qq<5;qq++) { System.out.print(selected[qq]+1+" "); } System.out.println(); } } } } } //将数组初始化,即将数据储存进数组 static public void initialize() { operator[0]='+'; operator[5]='+'; operator[6]='+'; operator[11]='+'; operator[15]='+'; operator[1]='-'; operator[2]='-'; operator[8]='-'; operator[13]='-'; operator[14]='-'; operator[3]='*'; operator[4]='*'; operator[7]='*'; operator[9]='*'; operator[10]='*'; operator[12]='*'; number[0]=190; number[1]=87; number[2]=94; number[3]=7; number[4]=12; number[5]=29; number[6]=65; number[7]=8; number[8]=999; number[9]=9; number[10]=22; number[11]=19; number[12]=4; number[13]=576; number[14]=425; number[15]=117; }
//此方法用来计算选出来的五个数的计算结果并返回这个结果
static public int judge(int[]a) { //首先我们将所有的“*”消除 for(int i=1;i<5;i++) { if(operator[a[i]]=='*') { int j=i+1; if(j<5) { while(operator[a[j]]=='*') { j++; if(j>=5) break; } } j--; for(int k=i;k<=j;k++) { number[a[i-1]]=number[a[i-1]]*number[a[k]]; number[a[k]]=0; operator[a[k]]='+'; } } } int end=0; //对只含有加减运算的数进行计算 for(int i=0;i<5;i++) { if(operator[a[i]]=='+') end+=number[a[i]]; if(operator[a[i]]=='-') end-=number[a[i]]; } return end; } `
相关文章推荐
- 数学与程序的结合——一道游戏题目的快速解法
- 小学数学题一道
- 一道小学五年级的数学暑假作业引人思考
- 利用编程解决一道数学题
- 用Green定理解一道据说是小学六年级的平面几何数学题
- 一道小学五年级的数学题
- 关于数学问题的程序解决,找出推导式及西大OJ_14解答
- 一道数学问题的程序解答
- 从一道小学数学题的程序解法看开发效率的重要性
- 这是一道数学类的问题,对=于这类的问题,当然我们要列出数学公式,用程序实现它可以了
- 一道难倒多数家长的小学一年级数学题
- 用JAVA程序解决鬼谷子数学问题
- 数学建模坑爹的C程序解决问题
- 一道小学数学题[状元蹄]
- 一道小学数学题
- 一道小学数学题...
- 一道小学数学题引发的“血案”
- 使用程序解决一道逻辑推理题
- 一道小学的数学题
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。