给定数组a[1,2,3],用a里面的元素来生成一个长度为5的数组,打印出其排列组合
给定数组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的数组,打印出其排列组合的更多相关文章
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlog ...
- 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] 之外的 ...
- js对Date对象的操作的问题(生成一个倒数7天的数组)
今天在论坛上看到这样一个问题如下: 问题描述: 使用JavaScript生成一个倒数7天的数组.比如今天是10月1号,生成的数组是["9月25号","9月26号" ...
- 一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。
前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: using System; usi ...
- 不用循环,、es6创建一个长度为100的数组
问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 结果为: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 ...
- 创建一个长度是5的数组,并填充随机数。使用for循环或者while循环,对这个数组实现反转效果
package day01; import java.util.Random; /** * 首先创建一个长度是5的数组,并填充随机数.使用for循环或者while循环,对这个数组实现反转效果 * @a ...
- 前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?
昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙|∣今天早上起床,想到需要思考一下这个问题. 当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的 ...
- 用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据。
用最小的空间复杂度找出一个长度为n的数组且数据中的元素是[0,n-1]中任一个重复的数据. 比如:[1, 2, 3, 3, 2, 2, 6, 7, 8, 9] 中 2 or 3 分析:这道题目,实现比 ...
- php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
http://blog.csdn.net/xyzchenxiaolin/article/details/51700485 源数据: $infos = array( array( 'a' => 3 ...
随机推荐
- 【中文分词系列】 4. 基于双向LSTM的seq2seq字标注
http://spaces.ac.cn/archives/3924/ 关于字标注法 上一篇文章谈到了分词的字标注法.要注意字标注法是很有潜力的,要不然它也不会在公开测试中取得最优的成绩了.在我看来,字 ...
- 【收藏】介绍RCU的好文章
RCU原理: RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的.对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个 ...
- VMware中创建Ubuntu16.0.4虚拟桥连方式无法上网
一.问题描述 在本地VMvare中已经安装了两台虚拟机,网络方式都是桥连,上网都可以自动获取IP地址 和HOST主机是一个号段的 ,同为192.168.1.X KingServer1(原始安装) 桥 ...
- 【机器学习】Logistic Regression 的前世今生(理论篇)
Logistic Regression 的前世今生(理论篇) 本博客仅为作者记录笔记之用,不免有非常多细节不正确之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需转载,请 ...
- linux下安装与删除软件
linux下安装与删除软件 (2005-07-04 11:24:10) 转载▼ 标签: 杂谈 分类: MSN搬家 现在linuxx下的软件大都是rpm,deb.tar.gz和tar.bz2格式.1.r ...
- ZH奶酪:HTML元素文本溢出显示省略号(...)
一 单行文本 overflow: hidden; text-overflow: ellipsis; white-space: nowrap; overflow 属性规定当内容溢出元素框时发生的事情. ...
- SHELL字符串使用总结
1.获取字符串的长度,${#str} #设置字符串 $ str="liqiu" #打印字符串 $ echo $str liqiu #继续打印字符串 $ echo ${str} li ...
- 转:nginx基础概念(connection)
在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件.利用nginx封装的connection,我们可以很方便的使用nginx来处理与连接相关的事情,比 ...
- Python-统计svn变更代码行数
1 #!/bin/bash/python 2 # -*-coding:utf-8-*- 3 #svn统计不同url代码行数变更脚本,过滤空行,不过滤注释. 4 import subprocess,os ...
- Configutation读取properties文件信息
commons configuration可以很方便的访问配置文件和xml文件中的的内容.Commons Configuration 是为了提供对属性文件.XML文件.JNDI资源.来自JDBC Da ...