JAVA寻找任意元素之和最接近指定数值的程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA寻找任意元素之和最接近指定数值的程序相关的知识,希望对你有一定的参考价值。
比如说我想找x,y,z,让x+y+z最接近100的组合,将x,y,z全部罗列出来,程序要如何写?谢谢!
x,y,z 全是正整数
x,y,z全部都是正整数,相等或者最接近一百
参考技术A 不知道问什么,我就按照的理解来做了,xyz是int且是正整数,相加等于99(若果壹佰的话改一下就是了),代码如下:public class xyz
public static void main(String[] args)
int x=0;
int y=0;
int z=0;
for ( x=0 ;x<100;x++)
for(y=0;y<100-x;y++)
z=99-x-y;
System.out.println(x+" "+y+" "+z);
这样会把所有xyz的可能列出来,你也可以用个数组来装他们追问
x+y+z 需要最接近一百,和不是一个确定值,我想要找到这个最接近的和。
我实际要计算sum=x*y*z*100+x*y*z*120,使得sum最接近10000的sum以及x,y,z值,一个个试太麻烦了,想做个小程序算一下。明白?
有你哪里可以知道sum=220*(xyz),简化就是11(xyz)最接近500的xyz组合,且xyz不能超过50.那就可以变编程了
public class xyz
public static void main(String[] args)
int x,y,z;
int sum;
int min=100;
int trueneed[]=new int[3];
/**
* 求出(11*x*y*z)其中的最接近500的xyz组合
*/
for(x=1;x<50;x++)
for(y=1;y<50;y++)
for(z=1;z<50;z++)
sum=11*x*y*z-500;
// System.out.println(sum);
if (sum<0) //这里貌似有一个直接的math方法可以求绝对值,我忘了,你可以改的
sum=0-sum;
if(min>sum) //如果min》sum就证明新组合比旧组合更接近,修改xyz组合
min=sum;
trueneed[0]=x;
trueneed[1]=y;
trueneed[2]=z;
for (int i = 0; i < trueneed.length; i++) //将xyz其中一个组合输出,此步可省
int j = trueneed[i];
System.out.println(j);
System.out.println("所用xyz可能组合");
// 求出所用等于sum的组合,这里是所用等于45的xyz组合,并输出,你也可以用数组来装
sum=trueneed[0]*trueneed[1]*trueneed[2];
for(x=1;x<50;x++)
for(y=1;y<50;y++)
for(z=1;z<50;z++)
if (sum==(x*y*z))
System.out.println(x+"\\t"+y+"\\t"+z);
以上是关于JAVA寻找任意元素之和最接近指定数值的程序的主要内容,如果未能解决你的问题,请参考以下文章
最接近的三数之和,完整代码实现,java及python实现。
最接近的三数之和,完整代码实现,java及python实现。