求助大神,一道java关于排列组合穷举问题。 本帖最后由 lvpiggy1 于 2013-07-28 21:19:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要求将所有的可能都排列出来吧?这里随便写个随即生成的方法参考下好了: public static void main(String[] args) { Random r = new Random();//随机数生成器 //存储1~11的数,12固定最后一个 List<Integer> list = new ArrayList<Integer>(); Integer temp;//辅助变量 while(list.size()<11){ temp = r.nextInt(11)+1;//随机生成的数是0到10 if(list.contains(temp)) { continue; } list.add(temp); } //最后一个12放进去 list.add(12); //二维数组存储 int[][] arr = new int[4][3]; int index=0; for(int i=0;i<4;i++) { for(int j=0;j<3;j++) { arr[i][j]=list.get(index++); } } //打印 for(int i=0;i<4;i++) { for(int j=0;j<3;j++) { System.out.print(arr[i][j]+" "); } System.out.println();//一行结束,打印换行 } } 组合工具类: http://blog.csdn.net/raistlic/article/details/7844812import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;public class CombinationTest { public static void main(String[] args) { List<Integer> elevenBalls = Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ); Set<Integer> rest = new HashSet<Integer>(11); Set<Integer> rest1 = new HashSet<Integer>(8); Set<Integer> rest2 = new HashSet<Integer>(5); for(List<Integer> c : Combination.of(elevenBalls, 3)) { rest.clear(); rest.addAll(elevenBalls); rest.removeAll(c); for(List<Integer> c1 : Combination.of(rest, 3)) { rest1.clear(); rest1.addAll(rest); rest1.removeAll(c1); for(List<Integer> c2 : Combination.of(rest1, 3)) { rest2.clear(); rest2.addAll(rest1); rest2.removeAll(c2); rest2.add(12); System.out.println(c + "; " + c1 + "; " + c2 + "; " + rest2); } } } }}run:[1, 2, 3]; [4, 5, 6]; [7, 8, 9]; [10, 11, 12][1, 2, 3]; [4, 5, 6]; [7, 8, 10]; [9, 11, 12][1, 2, 3]; [4, 5, 6]; [7, 8, 11]; [9, 10, 12][1, 2, 3]; [4, 5, 6]; [7, 9, 10]; [8, 11, 12][1, 2, 3]; [4, 5, 6]; [7, 9, 11]; [8, 10, 12][1, 2, 3]; [4, 5, 6]; [7, 10, 11]; [8, 9, 12][1, 2, 3]; [4, 5, 6]; [8, 9, 10]; [11, 12, 7][1, 2, 3]; [4, 5, 6]; [8, 9, 11]; [10, 12, 7][1, 2, 3]; [4, 5, 6]; [8, 10, 11]; [9, 12, 7][1, 2, 3]; [4, 5, 6]; [9, 10, 11]; [8, 12, 7][1, 2, 3]; [4, 5, 7]; [6, 8, 9]; [10, 11, 12][1, 2, 3]; [4, 5, 7]; [6, 8, 10]; [9, 11, 12][1, 2, 3]; [4, 5, 7]; [6, 8, 11]; [9, 10, 12][1, 2, 3]; [4, 5, 7]; [6, 9, 10]; [8, 11, 12][1, 2, 3]; [4, 5, 7]; [6, 9, 11]; [8, 10, 12][1, 2, 3]; [4, 5, 7]; [6, 10, 11]; [8, 9, 12][1, 2, 3]; [4, 5, 7]; [8, 9, 10]; [11, 12, 6][1, 2, 3]; [4, 5, 7]; [8, 9, 11]; [10, 12, 6][1, 2, 3]; [4, 5, 7]; [8, 10, 11]; [9, 12, 6][1, 2, 3]; [4, 5, 7]; [9, 10, 11]; [8, 12, 6][1, 2, 3]; [4, 5, 8]; [6, 7, 9]; [10, 11, 12][1, 2, 3]; [4, 5, 8]; [6, 7, 10]; [9, 11, 12][1, 2, 3]; [4, 5, 8]; [6, 7, 11]; [9, 10, 12][1, 2, 3]; [4, 5, 8]; [6, 9, 10]; [11, 12, 7]…………(结果太长,不贴了)BUILD SUCCESSFUL (total time: 7 seconds) JAVA向前引用的问题,郁闷死我了。 请问JAVA如何实现登陆WEB网站?给个具体得例子可以好吗? Graphicst类的translate方法是什么作用? SQL SERVER 乱码问题,急!!!(新手) 如何进行图形合并? 救命啊!!!初学者的问题,但是也挺棘手的啊!高手们拉我一把啊!谢谢了啊! java连接数据库调取的数据问题resultset swing JTable DefaultCellEditor 关于乱码 学JAVA要什么基础吗? 新人求教 一个关于java静态初始化的奇怪问题
public static void main(String[] args) {
Random r = new Random();//随机数生成器
//存储1~11的数,12固定最后一个
List<Integer> list = new ArrayList<Integer>();
Integer temp;//辅助变量
while(list.size()<11){
temp = r.nextInt(11)+1;//随机生成的数是0到10
if(list.contains(temp))
{
continue;
}
list.add(temp);
}
//最后一个12放进去
list.add(12);
//二维数组存储
int[][] arr = new int[4][3];
int index=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
arr[i][j]=list.get(index++);
}
}
//打印
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
{
System.out.print(arr[i][j]+" ");
}
System.out.println();//一行结束,打印换行
}
}
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;public class CombinationTest {
public static void main(String[] args) {
List<Integer> elevenBalls = Arrays.asList(
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
);
Set<Integer> rest = new HashSet<Integer>(11);
Set<Integer> rest1 = new HashSet<Integer>(8);
Set<Integer> rest2 = new HashSet<Integer>(5);
for(List<Integer> c : Combination.of(elevenBalls, 3)) {
rest.clear();
rest.addAll(elevenBalls);
rest.removeAll(c);
for(List<Integer> c1 : Combination.of(rest, 3)) {
rest1.clear();
rest1.addAll(rest);
rest1.removeAll(c1);
for(List<Integer> c2 : Combination.of(rest1, 3)) {
rest2.clear();
rest2.addAll(rest1);
rest2.removeAll(c2);
rest2.add(12);
System.out.println(c + "; " + c1 + "; " + c2 + "; " + rest2);
}
}
}
}
}
run:
[1, 2, 3]; [4, 5, 6]; [7, 8, 9]; [10, 11, 12]
[1, 2, 3]; [4, 5, 6]; [7, 8, 10]; [9, 11, 12]
[1, 2, 3]; [4, 5, 6]; [7, 8, 11]; [9, 10, 12]
[1, 2, 3]; [4, 5, 6]; [7, 9, 10]; [8, 11, 12]
[1, 2, 3]; [4, 5, 6]; [7, 9, 11]; [8, 10, 12]
[1, 2, 3]; [4, 5, 6]; [7, 10, 11]; [8, 9, 12]
[1, 2, 3]; [4, 5, 6]; [8, 9, 10]; [11, 12, 7]
[1, 2, 3]; [4, 5, 6]; [8, 9, 11]; [10, 12, 7]
[1, 2, 3]; [4, 5, 6]; [8, 10, 11]; [9, 12, 7]
[1, 2, 3]; [4, 5, 6]; [9, 10, 11]; [8, 12, 7]
[1, 2, 3]; [4, 5, 7]; [6, 8, 9]; [10, 11, 12]
[1, 2, 3]; [4, 5, 7]; [6, 8, 10]; [9, 11, 12]
[1, 2, 3]; [4, 5, 7]; [6, 8, 11]; [9, 10, 12]
[1, 2, 3]; [4, 5, 7]; [6, 9, 10]; [8, 11, 12]
[1, 2, 3]; [4, 5, 7]; [6, 9, 11]; [8, 10, 12]
[1, 2, 3]; [4, 5, 7]; [6, 10, 11]; [8, 9, 12]
[1, 2, 3]; [4, 5, 7]; [8, 9, 10]; [11, 12, 6]
[1, 2, 3]; [4, 5, 7]; [8, 9, 11]; [10, 12, 6]
[1, 2, 3]; [4, 5, 7]; [8, 10, 11]; [9, 12, 6]
[1, 2, 3]; [4, 5, 7]; [9, 10, 11]; [8, 12, 6]
[1, 2, 3]; [4, 5, 8]; [6, 7, 9]; [10, 11, 12]
[1, 2, 3]; [4, 5, 8]; [6, 7, 10]; [9, 11, 12]
[1, 2, 3]; [4, 5, 8]; [6, 7, 11]; [9, 10, 12]
[1, 2, 3]; [4, 5, 8]; [6, 9, 10]; [11, 12, 7]
…………(结果太长,不贴了)
BUILD SUCCESSFUL (total time: 7 seconds)