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

ruby代码:

def all_possible_arr arr, length = 5
ret = []
length.times do
if ret.empty?
ret = arr.map {|i| [i]}
else
new_ret = []
ret.each do |r|
arr.each do |e|
new_ret << r.clone.unshift(e)
end
end
ret = new_ret
end
end
ret
end p all_possible_arr [1, 2, 3]

JAVA代码:

package com.test;

import java.util.ArrayList;

public class TestEmu {

    @SuppressWarnings("unchecked")
public ArrayList<ArrayList<Integer>> getArray(ArrayList<Integer> ll, int len) {
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < len; i++) {
if (list.size() == 0) {
for (int j = 0; j < ll.size(); j++) {
ArrayList<Integer> temp = new ArrayList<Integer>();
temp.add(ll.get(j));
list.add(temp);
}
} else {
ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
for (ArrayList<Integer> l : list) {
for (int m : ll) {
ArrayList<Integer> t = (ArrayList<Integer>) l.clone();
t.add(m);
temp.add(t);
}
}
list = temp;
}
}
return list;
} public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
TestEmu te = new TestEmu();
ArrayList<ArrayList<Integer>> ll = te.getArray(list, 5);
for(ArrayList<Integer> l:ll){
for(int i:l){
System.out.print(i+" ");
}
System.out.println();
}
} }

递归实现:

package com.test.util;

import java.util.Arrays;

public class Test {

	private int end;

	private int[] arr;

	public void setEnd(int end) {
this.end = end;
} public void setArr(int[] arr) {
this.arr = arr;
} public void test(int[] cur){
if(cur.length==end){
System.out.println(Arrays.toString(cur));
return;
}
for (int i = 0; i < arr.length; i++) {
int[] temp = this.mergeIntArray(cur, new int[]{arr[i]});
test(temp);
}
} private int[] mergeIntArray(int[] arr1, int[] arr2){
int[] arr = new int[arr1.length+arr2.length];
for (int i = 0; i < arr1.length; i++) {
arr[i] = arr1[i];
}
for (int i = 0; i < arr2.length; i++) {
arr[arr1.length+i] = arr2[i];
}
return arr;
} public static void main(String[] args) {
Test t = new Test();
int[] i = new int[]{1,2};
t.setEnd(5);
t.setArr(i);
for (int j = 0; j < i.length; j++) {
t.test(new int[]{i[j]});
}
} }

给定数组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. 【使用JSOUP实现网络爬虫】修改数据-设置属性的值

    问题 在你解析一个Document之后可能想修改其中的某些属性值,然后再保存到磁盘或都输出到前台页面. 方法 可以使用属性设置方法 Element.attr(String key, String va ...

  2. Spark Strcutured Streaming中使用Dataset的groupBy agg 与 join 示例(java api)

    Dataset的groupBy agg示例 Dataset<Row> resultDs = dsParsed .groupBy("enodeb_id", "e ...

  3. Thinkphp5 使用odbc连接到sqlserver

    在PHP中访问mssql有两个方式 1.安装相应的驱动,如sqlsrv 2.直接使用PHP自带的ODBC驱动(不需要安装)   本文直接使用自带的ODBC驱动 在使用前请确定PHP开启了php_pdo ...

  4. (转)【风宇冲】Unity3D教程宝典之Blur

    原创文章如需转载请注明:转载自风宇冲Unity3D教程学院                   BlurBlur模糊其实理解了以后非常简单.核心原理就是 1个点的颜色 并不用该点的颜色,而是用该点周围 ...

  5. ASP.NET MVC提交LIST列表到后台接收不到数据

    兄跌 你看到这篇文章的时候已经找到答案了. 我在解决这个问题的端倪的时候已经浪费了我一个下午的休假时间.所以你应该给我一个赞!!! 不废话了上代码: Entity(Model) [Serializab ...

  6. Eclipse导入git上的maven web项目 部署 - lpshou

    http://www.tuicool.com/articles/fqm2Qf   推酷 文章 微博 主题 站点 活动 应用 周刊 登录   Eclipse导入git上的maven web项目 部署 - ...

  7. var, object, dynamic的区别以及使用

    var, object, dynamic的区别以及使用 阅读目录: 一. 为什么是它们三个 二. 能够任意赋值的原因 三. dynamic的用法 四. 使用dynamic的注意事项 拿这三者比较的原因 ...

  8. Centos7中修改Hostname的方法

    一.Centos7中修改的方法: hostnamectl set-hostname <new hostname> 说明:centOS 7 里面修改hostname的方式有所改变,修改/et ...

  9. JAVA的Spring注入机制事例详解

    一.前言 最近使用Spring里面的依赖注入,比如StudentServiceImple2.java代码: package di.service.imple; import com.mengya.sp ...

  10. insert-interval 插入区间

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...