将5,6,7,8,9添加下面的空格里,使他们的积有最大值。
  
  __  __ __  × __ __
 使用穷举法,把5个数字循环判断放入数组,最大的值就是要找的值。

解决方案 »

  1.   

    我写了一段程序看看
    第一个文件Counter.java文件:
    package demo;import java.util.Vector;/**
     *
     * @author Administrator
     */
    public class Counter {
        private int[] intAry = new int[]{ 5 , 6 , 7 , 8 , 9 };
        
        public int getMost(  ){
            Vector<Vector<Integer>> values = this.getTwoNumber();
            int result = 0 ;
            for( Vector<Integer> value : values ){
                int firstNumber = value.get( 0 );
                int secondNumber = value.get( 1 );
                int product = firstNumber * secondNumber;
                System.out.println( firstNumber + "*" + secondNumber + "=" + product );
                if( product > result ){
                    result = product;
                }
            }
            return result;
        }
        private Vector<Vector<Integer>> getTwoNumber(){
            Vector<Vector<Integer>> result = new Vector<Vector<Integer>>();
            int[] tempAry = new int[intAry.length];
            //可以肯定不论怎样,我们可以把五个数分为3、2两组,每组都按数值从大到小的顺序排列,方可保证最大
            //第一组有两个数,我们共有10种取法
            
            for( int i = 0 ; i < tempAry.length ; i ++ ){
                for( int j = i+1 ; j < tempAry.length ; j ++ ){
                    Vector<Integer> res = new Vector<Integer>();
                    for( int len = 0 ; len < intAry.length ; len ++ ){
                        //不能用tempAry=intAry代替此处for循环
                        tempAry[len] = intAry[len];
                    }
                    int secondNumber = tempAry[i];
                    tempAry[i] = 0 ;
                    secondNumber += tempAry[j] * 10 ;
                    tempAry[j] = 0 ;
                    int firstNumber = 0;
                    for( int a : tempAry ){
                        if( a != 0 ){
                            firstNumber /= 10;
                            firstNumber += a * 100;
                        }
                    }
                    res.add( firstNumber );
                    res.add( secondNumber );
                    result.add(res);
                }
            }
            return result;
        }
    }
    第二个文件Main.java:
    package demo;/**
     *
     * @author Administrator
     */
    public class Main {    /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            Counter counter = new Counter();
            int result = counter.getMost();
            System.out.println( "The last Result is : " + result );
        }}结果输出:
    987*65=64155
    986*75=73950
    976*85=82960
    876*95=83220
    985*76=74860
    975*86=83850
    875*96=84000
    965*87=83955
    865*97=83905
    765*98=74970
    The last Result is : 84000