for循环的小练习之6个不重复数字的所有组合输出
2017-10-23 21:27
253 查看
for循环的小练习之6个不重复数字的所有组合输出
介绍学习Java基础时做的小练习分享,请大家批评指正!
小练习
需求:输出数字1-6六个数字所有的不同排列组合.分析:首先我们要明确有多少种组合,6位数的所有不同排列组合可用6!计算得出是720种.
代码:
public class Test { public static void main(String[] args) { int count = 0;//定义个计数器先~ ArrayList<int[]> arrList = new ArrayList<>();//我选择使用集合做,存入数组对象 Random r = new Random(); arrList.add(new int[]{1,2,3,4,5,6});//先加个123456的组合(这里也可以不加,为了稳妥我选择加了,这里加了之后下面要减少一个计算,即719个组合) for (int m = 1; m < 720; m++){ int[] arr = new int[6];//6位数组合的数组 for (int i = 0; i < arr.length; i++) {//从这里我们先解决随机数方法产生不重复的6个数字,因为是随机的,所以组合也是随机的 boolean b = true;//定义标记 int num = r.nextInt(6)+1;//1-6的随机数 for (int j = 0; j < arr.length; j++) { if (arr[j] == num) {//如果随机数产生后在遍历过程中有一样的数字的话 b = false;//不进入if i--;//并且回到刚才的步骤重新来一次 break; } } if (b) { arr[i] = num;//如果没有进入上面的if则说明没有重复的,则添加到数组 } }//至此产生不重复1-6数字数组 boolean flag = true;//定义第二个标记,此标记用于集合的添加 for (int i = 0; i < arrList.size(); i++) { if (Arrays.equals(arrList.get(i), arr)) {//使用Arrays中的equals方法对两个数组进行比较,此比较若要相等需同时满足元素及元素顺序完全一致才会true flag = false;//如果相等,则不进入下个if } } if (flag) {//如果没有进入上面的if,说明这个数字排列数组之前没有过 arrList.add(arr);//则添加进集合 count++;//这个count用来验证是否添加了719个数组 System.out.println("添加成功"+count+"个");//同验证用 } else { System.out.println("添加失败");//用于验证 m--;//如果没有添加成功,整个for重新来一次,见最上面 } }//至此产生720个不重复排列数组 //用来看看是不是真的没有重复滴,要验证比较麻烦哈,有耐心的朋友可以真的去验证看看,逻辑没错应该是没问题的了. System.out.println(arrList.size()); for (int i = 0; i < arrList.size(); i++) { for (int j = 0; j < arrList.get(i).length; j++) { System.out.print(arrList.get(i)[j]+" "); } System.out.println(); } } } //PS:这种办法比较麻烦,希望有更好方法的朋友可以交流一下
相关文章推荐
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- for循环的小练习之6个不重复数字的所有组合输出
- 福彩双色球中红球由6个1-33之间的数字组合,且不重复,编写代码,使用Set集合来存储随机生成的1-33的数字,然后输出生成的数字
- 122345这6个数字,输出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?请输出所有组合
- 输出字符串所有组合(含有重复的字符)及输出其所有子串(含有重复的字符)
- 输出1到N之间所有相加最接近M的数字组合【可参考更改为背包算法】
- 有一个投篮游戏。球场有p个篮筐,编号为0,1...,p-1。每个篮筐下有个袋子,每个袋子最多装一个篮球。有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完。输出-1。问游戏最终的输出是什么?
- java练习:打印 数字1、2、3、4的组合,不能以4开头,1和3不能相邻,且数字不能重复
- 编程练习:求和为指定数字的所有组合
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
- 给出若干个位数字, 计算所有不重复组合.
- 将1~6这6个数字按每行3个进行输出,输出时要求左边的数字比右边的大,上边的数字比下边的大,求出所有可能的填写方法并统计输出排列方法有多少种。
- for循环的小练习之产生不重复数字的整型数组
- 字母a-z,数字0-9,现需要其中任意3个作为密码,请输出所有可能组合。
- for循环的小练习之产生不重复数字的整型数组