站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于排列组合算法和随机抽取的算法

关于排列组合算法和随机抽取的算法

摘要: 关于排列组合算法和随机抽取的算法


小弟有两个问题想问一下各位高手
1.写一个排列组合算法,1-49数字中,按7个数组成一个数组,列出他们所产生的组合,不包含重复的;
2.在上一算法所产生的组合中随机抽取1000个数组。
请问一下怎么写?先谢过了!


public class Test
{
public static void main(String[] args) throws Exception
{
int[] arr = new int[7];
List list = new ArrayList();
for (int i1 = 1; i1 <= 49; i1++)
{
arr[0] = i1;
for (int i2 = i1 + 1; i2 <= 49; i2++)
{
arr[1] = i2;
for (int i3 = i2 + 1; i3 <= 49; i3++)
{
arr[2] = i3;
for (int i4 = i3 + 1; i4 <= 49; i4++)
{
arr[3] = i4;
for (int i5 = i4 + 1; i5 <= 49; i5++)
{
arr[4] = i5;
for (int i6 = i5 + 1; i6 <= 49; i6++)
{
arr[5] = i6;
for (int i7 = i6 + 1; i7 <= 49; i7++)
{
arr[6] = i7;
printArray(arr);
}
}
}
}
}
}
}
}

public static void printArray(int[] arr)
{
System.out.print("{");
for (int i = 0; i < arr.length - 1; i++)
System.out.print(arr[i] + ",");
System.out.println(arr[arr.length - 1] + "}");
}


至于你的第二个问题的解决方法,你可以声明一个list,然后在for循环中的printArray(arr)处用list.add(arr)把每个数组都添加到list中。

然后等循环结束后取得list.size();根据这个size生成1000个随机数,然后用list.get(index)。


前提是的内存要足够,因为这个list很大的。


因为一共有85900584个数组


↑返回目录
前一篇: 用java做一个记事本
后一篇: 字符串格式转换,急求,在线等