将5,6,7,8,9添入到算式 _ _ _ * _ _ 中,要求求出最大乘积的结果和算式

将5,6,7,8,9添入到算式 _ _ _ * _ _ 中,要求求出最大乘积的结果和算式

package  com.sitinspring;

import  java.util.LinkedList;
import  java.util.List;

/** */ /**
 * 将5,6,7,8,9添入到下面的算式中,使得他们的积有最大值
 * _ _ _ * _ _ (即三位数乘以两位数的形式),要求求出最大乘积的结果和算式。
 * 
@author sitinspring([email protected]
 * 
@since 2008-6-11 上午10:17:57
 * @vsersion 1.00 创建 sitinspring 2008-6-11 上午10:17:57
 
*/

public   class  MaxMultiResult {
    
/** *//**
     * 存储全排列后数组的链表
     
*/

    
private List<Integer[]> ls;
    
    
/** *//**
     * 构造函数
     * 
@param arr
     
*/

    
public MaxMultiResult(Integer[] arr){
        ls
=new LinkedList<Integer[]>();
        
        
// 进行全排列,将排列后的结果放入链表
        permutation(arr,0,arr.length);
        
        
// 遍历查找乘积的最大值
        int multiResult=0;
        
int op1=0;
        
int op2=0;
        
for(Integer[] arrTmp:ls){
            
int op1Tmp=arrTmp[0]*100+arrTmp[1]*10+arrTmp[2];
            
int op2Tmp=arrTmp[3]*10+arrTmp[4];
            
int multiResultTmp=op1Tmp*op2Tmp;
            
// 输出临时结果
            System.out.println("乘积为"+multiResultTmp+" 算式为:"+op1Tmp+"*"+op2Tmp);
            
            
if(multiResultTmp>multiResult){
                multiResult
=multiResultTmp;
                op1
=op1Tmp;
                op2
=op2Tmp;
            }

        }

        
        
// 输出最大乘积,乘数,被乘数
        System.out.println("最大乘积为"+multiResult+" 算式为:"+op1+"*"+op2);
    }

    
    
/** *//**
     * 全排列,将排列结果变成新数组存入链表
     * 
@param arr
     * 
@param start
     * 
@param end
     
*/

    
private void permutation(Integer[] arr,int start,int end){
        
if(start<end+1){
            permutation(arr,start
+1,end);
            
            
for(int i=start+1;i<end;i++){
                Integer temp;
                
                temp
=arr[start];
                arr[start]
=arr[i];
                arr[i]
=temp;
                
                permutation(arr,start
+1,end);
                
                temp
=arr[i];
                arr[i]
=arr[start];
                arr[start]
=temp;
            }

        }

        
else{
            
// 创建新数组
            Integer[] arrNew=new Integer[arr.length];            
            
for(int i=0;i<arrNew.length;i++){
                arrNew[i]
=new Integer(arr[i]);
            }

            
            
// 将新数组放入链表
            ls.add(arrNew);
            
            
// 输出新数组
            /**//*for(int i=0;i<end;i++){
                System.out.print(arrNew[i]+",");
            }
            System.out.print("\n");
*/

        }

    }


    
/** *//**
     * 程序入口
     * 
@param args
     
*/

    
public static void main(String[] args){
        Integer[] arr
={5,6,7,8,9};
        
new MaxMultiResult(arr);
    }

}

输出结果:
乘积为50463 算式为: 567 * 89
乘积为55566 算式为:
567 * 98
乘积为44872 算式为:
568 * 79
乘积为55096 算式为:
568 * 97
乘积为49503 算式为:
569 * 87
乘积为44382 算式为:
569 * 78
乘积为51264 算式为:
576 * 89
乘积为56448 算式为:
576 * 98
乘积为39882 算式为:
578 * 69
乘积为55488 算式为:
578 * 96
乘积为49794 算式为:
579 * 86
乘积为39372 算式为:
579 * 68
乘积为40503 算式为:
587 * 69
乘积为56352 算式为:
587 * 96
乘积为46294 算式为:
586 * 79
乘积为56842 算式为:
586 * 97
乘积为39463 算式为:
589 * 67
乘积为44764 算式为:
589 * 76
乘积为51342 算式为:
597 * 86
乘积为40596 算式为:
597 * 68
乘积为45448 算式为:
598 * 76
乘积为40066 算式为:
598 * 67
乘积为51852 算式为:
596 * 87
乘积为46488 算式为:
596 * 78
乘积为58473 算式为:
657 * 89
乘积为64386 算式为:
657 * 98
乘积为51982 算式为:
658 * 79
乘积为63826 算式为:
658 * 97
乘积为57333 算式为:
659 * 87
乘积为51402 算式为:
659 * 78
乘积为60075 算式为:
675 * 89
乘积为66150 算式为:
675 * 98
乘积为40002 算式为:
678 * 59
乘积为64410 算式为:
678 * 95
乘积为57715 算式为:
679 * 85
乘积为39382 算式为:
679 * 58
乘积为40533 算式为:
687 * 59
乘积为65265 算式为:
687 * 95
乘积为54115 算式为:
685 * 79
乘积为66445 算式为:
685 * 97
乘积为39273 算式为:
689 * 57
乘积为51675 算式为:
689 * 75
乘积为59245 算式为:
697 * 85
乘积为40426 算式为:
697 * 58
乘积为52350 算式为:
698 * 75
乘积为39786 算式为:
698 * 57
乘积为60465 算式为:
695 * 87
乘积为54210 算式为:
695 * 78
乘积为68085 算式为:
765 * 89
乘积为74970 算式为:
765 * 98
乘积为45312 算式为:
768 * 59
乘积为72960 算式为:
768 * 95
乘积为65365 算式为:
769 * 85
乘积为44602 算式为:
769 * 58
乘积为67284 算式为:
756 * 89
乘积为74088 算式为:
756 * 98
乘积为52302 算式为:
758 * 69
乘积为72768 算式为:
758 * 96
乘积为65274 算式为:
759 * 86
乘积为51612 算式为:
759 * 68
乘积为54165 算式为:
785 * 69
乘积为75360 算式为:
785 * 96
乘积为46374 算式为:
786 * 59
乘积为74670 算式为:
786 * 95
乘积为51285 算式为:
789 * 65
乘积为44184 算式为:
789 * 56
乘积为68370 算式为:
795 * 86
乘积为54060 算式为:
795 * 68
乘积为44688 算式为:
798 * 56
乘积为51870 算式为:
798 * 65
乘积为67660 算式为:
796 * 85
乘积为46168 算式为:
796 * 58
乘积为51153 算式为:
867 * 59
乘积为82365 算式为:
867 * 95
乘积为68335 算式为:
865 * 79
乘积为83905 算式为:
865 * 97
乘积为49533 算式为:
869 * 57
乘积为65175 算式为:
869 * 75
乘积为51684 算式为:
876 * 59
乘积为83220 算式为:
876 * 95
乘积为60375 算式为:
875 * 69
乘积为84000 算式为:
875 * 96
乘积为49224 算式为:
879 * 56
乘积为57135 算式为:
879 * 65
乘积为59133 算式为:
857 * 69
乘积为82272 算式为:
857 * 96
乘积为67624 算式为:
856 * 79
乘积为83032 算式为:
856 * 97
乘积为57553 算式为:
859 * 67
乘积为65284 算式为:
859 * 76
乘积为50232 算式为:
897 * 56
乘积为58305 算式为:
897 * 65
乘积为68020 算式为:
895 * 76
乘积为59965 算式为:
895 * 67
乘积为51072 算式为:
896 * 57
乘积为67200 算式为:
896 * 75
乘积为82195 算式为:
967 * 85
乘积为56086 算式为:
967 * 58
乘积为72600 算式为:
968 * 75
乘积为55176 算式为:
968 * 57
乘积为83955 算式为:
965 * 87
乘积为75270 算式为:
965 * 78
乘积为82960 算式为:
976 * 85
乘积为56608 算式为:
976 * 58
乘积为63570 算式为:
978 * 65
乘积为54768 算式为:
978 * 56
乘积为83850 算式为:
975 * 86
乘积为66300 算式为:
975 * 68
乘积为64155 算式为:
987 * 65
乘积为55272 算式为:
987 * 56
乘积为73950 算式为:
986 * 75
乘积为56202 算式为:
986 * 57
乘积为65995 算式为:
985 * 67
乘积为74860 算式为:
985 * 76
乘积为82302 算式为:
957 * 86
乘积为65076 算式为:
957 * 68
乘积为72808 算式为:
958 * 76
乘积为64186 算式为:
958 * 67
乘积为83172 算式为:
956 * 87
乘积为74568 算式为:
956 * 78
最大乘积为84000 算式为:
875 * 96

你可能感兴趣的:(将5,6,7,8,9添入到算式 _ _ _ * _ _ 中,要求求出最大乘积的结果和算式)