您的位置:首页 > 其它

全排列的应用算法

2012-03-23 07:49 253 查看
/**

 * 将5,6,7,8,9添加下面的空格里,使他们的积有最大值。

  

  __  __ __  × __ __

 使用穷举法,把5个数字循环判断放入数组,最大的值就是要找的值。

 */

package 基础题;

import java.util.ArrayList;

public class MaxSum {

 staticArrayList<String> ls=new ArrayList<String>();

public static void main(String[] args) {

// TODO Auto-generated method stub

 String str="56789";

 char c[] = str.toCharArray();// 声明一个字符型数组

        int max=0;

        String rs=null;

ArrayList<String> list=sort(c, 0, c.length - 1);

for(int i=0;i<list.size();i++){

String str1=list.get(i).substring(0, 3);

String str2=list.get(i).substring(3);

int result=Integer.parseInt(str1)*Integer.parseInt(str2);

if(max<result){

max=result;

rs=str1+"*"+str2;

}

System.out.println(str1+"*"+str2+"="+result);

}

System.out.print("最大的乘积为:"+max);

}

public static ArrayList<String> sort(char c[],int begin,int end){

String str="";

if(begin==end){//如果begin==end说明数组中的元素交换完毕,可以打印输出

for(int i=0;i<=end;i++){

str+=c[i];

}

   ls.add(str);

//System.out.println();

}else{

for(int i=begin;i<=end;i++){

//将首元素与气候的第i个元素进行交换

char temp=c[begin];

c[begin]=c[i];

c[i]=temp;

//递归循环调用

sort(c,begin+1,end);

//还原数组

c[i]=c[begin];

c[begin]=temp;

}

}

return ls;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 string c import class list