求助大神,一道java关于排列组合穷举问题。
本帖最后由 lvpiggy1 于 2013-07-28 21:19:41 编辑
问题是这样的,有12个球,分别编号为1至12。 现在要求将他们分为4组,每组3个。12号球始终放在最后一组。最困难的是需要将分好的结果遍历显示出来。 我是新人,这程序想破头还没想出来怎么写,只能上网求助了。。
显示结果模板:
组1:
1,2,3
4,5,6
7,8,9
10,11,12
组2:
1,2,4
3,5,6
7,8,9
10,11,12
.
.
.
求大神指点!最好能将程序贴出来~!~! 别光写个思路 谢谢了!!!!!
------解决方案--------------------不要求将所有的可能都排列出来吧?这里随便写个随即生成的方法参考下好了:
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/7844812
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
);