解决方案 »

  1.   

    import java.util.*;
    public class Test{
    public static void main(String[] args){
    double min = Double.MAX_VALUE;
    for(int x=1;x<=10;x++){
    for(int y=1;y<=10;y++){
    if(x!=y){
    double fxy = (3*x-2*y)/(x-y);
    if(fxy<min) min = fxy;
    }
    }
    }
    System.out.println(min);
    }
    }
      

  2.   

    x 1-10
    y 1-10
    2个for循环
    所有情况都列出来,还怕求不到最小值吗
      

  3.   

     这题,大学还能用数学的方式去解
    现在,数学的方式都无解了,更不要说Java的方式了
      

  4.   

    不过存在一些问题,这里默认按照x,y是整数来算的,如果x,y是实数,可以采用每次递增一个较小的值来遍历,比如把循环中x++改为x+=0.1。但是不能保证找到的是最小值吧。
      

  5.   

    我把x++改成x+=0.1后怎么运算不出结果了
    对应吧int改为double
    public class Test{
    public static void main(String[] args){
    double min = Double.MAX_VALUE;
    for(double x=1;x<=10;x+=0.001)
    for(double y=1;y<=10;y+=0.001)
    if(x!=y){
    double fxy = (3*x-2*y)/(x-y);
    if(fxy<min) min = fxy;
    }
    System.out.println(min);
    }
    }
    但是这个题目愿意肯定是x,y为整数,x,y若不为整数,这个函数的最小值是负无穷。推导一下数学公式就知道了。
      

  6.   

      (3*x-2*y)/(x-y)
    =(3x-3y+y)/(x-y)
    =3+y/(x-y)
    =3+1/[(x-y)/y]
    =3+1/(x/y-1)要求结果最小,则1/(x/y-1)最小,
    则x/y-1最大,
    则x/y最大,
    则 x最大,y最小时满足。即:x=10,y=1
    j结果:28/9。不晓得对不对
      

  7.   


    则1/(x/y-1)最小,
    则x/y-1最大,
    这一步的前提是x/y-1为正数。如果是负数呢?