给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合

ruby代码:

  1. def all_possible_arr arr, length = 5
  2. ret = []
  3. length.times do
  4. if ret.empty?
  5. ret = arr.map {|i| [i]}
  6. else
  7. new_ret = []
  8. ret.each do |r|
  9. arr.each do |e|
  10. new_ret << r.clone.unshift(e)
  11. end
  12. end
  13. ret = new_ret
  14. end
  15. end
  16. ret
  17. end
  18.  
  19. p all_possible_arr [1, 2, 3]

JAVA代码:

  1. package com.test;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class TestEmu {
  6.  
  7. @SuppressWarnings("unchecked")
  8. public ArrayList<ArrayList<Integer>> getArray(ArrayList<Integer> ll, int len) {
  9. ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
  10. for (int i = 0; i < len; i++) {
  11. if (list.size() == 0) {
  12. for (int j = 0; j < ll.size(); j++) {
  13. ArrayList<Integer> temp = new ArrayList<Integer>();
  14. temp.add(ll.get(j));
  15. list.add(temp);
  16. }
  17. } else {
  18. ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
  19. for (ArrayList<Integer> l : list) {
  20. for (int m : ll) {
  21. ArrayList<Integer> t = (ArrayList<Integer>) l.clone();
  22. t.add(m);
  23. temp.add(t);
  24. }
  25. }
  26. list = temp;
  27. }
  28. }
  29. return list;
  30. }
  31.  
  32. public static void main(String[] args) {
  33. ArrayList<Integer> list = new ArrayList<Integer>();
  34. list.add(1);
  35. list.add(2);
  36. list.add(3);
  37. TestEmu te = new TestEmu();
  38. ArrayList<ArrayList<Integer>> ll = te.getArray(list, 5);
  39. for(ArrayList<Integer> l:ll){
  40. for(int i:l){
  41. System.out.print(i+" ");
  42. }
  43. System.out.println();
  44. }
  45. }
  46.  
  47. }

递归实现:

  1. package com.test.util;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class Test {
  6.  
  7. private int end;
  8.  
  9. private int[] arr;
  10.  
  11. public void setEnd(int end) {
  12. this.end = end;
  13. }
  14.  
  15. public void setArr(int[] arr) {
  16. this.arr = arr;
  17. }
  18.  
  19. public void test(int[] cur){
  20. if(cur.length==end){
  21. System.out.println(Arrays.toString(cur));
  22. return;
  23. }
  24. for (int i = 0; i < arr.length; i++) {
  25. int[] temp = this.mergeIntArray(cur, new int[]{arr[i]});
  26. test(temp);
  27. }
  28. }
  29.  
  30. private int[] mergeIntArray(int[] arr1, int[] arr2){
  31. int[] arr = new int[arr1.length+arr2.length];
  32. for (int i = 0; i < arr1.length; i++) {
  33. arr[i] = arr1[i];
  34. }
  35. for (int i = 0; i < arr2.length; i++) {
  36. arr[arr1.length+i] = arr2[i];
  37. }
  38. return arr;
  39. }
  40.  
  41. public static void main(String[] args) {
  42. Test t = new Test();
  43. int[] i = new int[]{1,2};
  44. t.setEnd(5);
  45. t.setArr(i);
  46. for (int j = 0; j < i.length; j++) {
  47. t.test(new int[]{i[j]});
  48. }
  49. }
  50.  
  51. }

给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合的更多相关文章

  1. 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字

    题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...

  2. java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}

    /** * 小米关于小米笔试题 数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = * input数组中,除了input[i] 之外的 ...

  3. js对Date对象的操作的问题(生成一个倒数7天的数组)

    今天在论坛上看到这样一个问题如下: 问题描述: 使用JavaScript生成一个倒数7天的数组.比如今天是10月1号,生成的数组是["9月25号","9月26号" ...

  4. 一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

    前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: using System; usi ...

  5. 不用循环,、es6创建一个长度为100的数组

    问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 结果为: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 ...

  6. 创建一个长度是5的数组,并填充随机数。使用for循环或者while循环,对这个数组实现反转效果

    package day01; import java.util.Random; /** * 首先创建一个长度是5的数组,并填充随机数.使用for循环或者while循环,对这个数组实现反转效果 * @a ...

  7. 前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?

    昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙|∣今天早上起床,想到需要思考一下这个问题. 当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的 ...

  8. 用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据。

    用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据. 比如:[1, 2, 3, 3, 2, 2, 6, 7, 8, 9] 中 2 or 3 分析:这道题目,实现比 ...

  9. php数组根据某一个键值,把相同键值的合并生成一个新的二维数组

    http://blog.csdn.net/xyzchenxiaolin/article/details/51700485 源数据: $infos = array( array( 'a' => 3 ...

随机推荐

  1. sql server 向mysql前移数据-单引号问题

    sql server中的数据导出来 用两个单引号表示一个单引号,这样的格式可以录入到mysql中: 但是遇到特殊的中文字符,例如顿号等,不能正确的显示两个单引号: mysql导出来的数据用反斜线和一个 ...

  2. 如何在 Kaggle 首战中进入前 10%

    原文:https://dnc1994.com/2016/04/rank-10-percent-in-first-kaggle-competition/ Introduction Kaggle 是目前最 ...

  3. Android 事件模型

    本文内容 基于监听的事件模型 基于回调的事件模型 Android 支持两种事件模型,基于监听的事件模型和基于回调的事件模型. 基于监听的事件模型 基于监听的事件模型是一种委托式的,更"面向对 ...

  4. PDF文档输出

    参考:http://ajava.org/article-685-1.html Flexpaper> 参数说明: Flexpaper参数说明SwfFile (String) 需要使用Flexpap ...

  5. 微信小程序 - 深度定义骨架屏(提示)

    此举每个页面必须创建对应的css样式,比较麻烦(但非常准确),推荐使用组件化的skeleton组件 原理很简单:知晓一下this.setData原理,就OK了,可能大家会因此了解到全屏加载loadin ...

  6. Mysql中使用Group_Concat将列组合进来。

    一.上例子: ) as CityId,group_concat(stationId) ,NameCn from `wd-area` where type='cn3k' and areaId like ...

  7. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  8. ES6 新增数据类型检测 Set Map Proxy

    检测代码方法 function isNative(api){ return /native code/.test(api.toString())&&typeof api !== 'un ...

  9. Android学习笔记八:用Broadcast Receiver跨进程(跨app)通信

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7515194.html 在前面介绍四大组件的时候提到了可以对外部事件进行过滤的Broadcast Receive ...

  10. Tomcat上文件的绝对路径访问笔记

    部署到Tomcat上的web项目的文件在代码中访问,可以先通过request获取到项目的根目录绝对路径,然后自己拼接子目录路径,直到文件.方法如下: String realpath=request.g ...