java题: 设有n个正整数,将它们联接成一排,组成一个最大的多位整数。例如:N=3时,3个整数13、312、343联成的最大整数为:34331213;

来源:互联网 发布:网络语言暴力 例子 编辑:程序博客网 时间:2024/06/06 09:08
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class test1 { public static void main(String[] args) {
 System.out.println("请至少输入两个数字,用逗号隔开>>");
 Scanner scanner = new Scanner(System.in);
 String n=scanner.nextLine();
 String[] s = scanner.nextLine().split(",");
 new test1().zuhe(s, s.length, 0);

 Collections.sort(totalNUm);
 System.out.println("共组成  " + kk+" 条组合数");
 System.out.println("所有的组合数为:" + totalNUm.toString());
 System.out.println("最大的的组合数为:" + totalNUm.get(kk-1));


}
 
static int kk = 0; static List totalNUm = new ArrayList();
private void zuhe(String[] array, int n, int k) {  if (n == k) {
  String s = "";
  for(int i=0;i<n;i++){
   s += array[i];
  }
  totalNUm.add(s);
  ++kk;
 } else {
  for (int i = k; i < n; i++) {
   swap(array, k, i);
   zuhe(array, n, k + 1);
   swap(array, i, k);
  }
 }
}
 
private void swap(String[] a, int x, int y) {  String temp = a[x];
 a[x] = a[y];
 a[y] = temp;
}
}
0 0
原创粉丝点击