算法-NDimension
来源:互联网 发布:四下美术教学软件 编辑:程序博客网 时间:2024/06/15 07:42
NDimension
对N(N1….Nn)个一维数组,其中假设N1数组有X1个元素,N2数组有X2个元素…Nn数组有Xn个元素。我们想输出一个具有N个元素的数组,该数组中第一个元素来自N1数值,第二个元素来自N2数值….第n个元素来自Nn数组
Example;
input:double[] a={1,2,3};double[] d={10,11};output:[1.0, 10.0][1.0, 11.0][2.0, 10.0][2.0, 11.0][3.0, 10.0][3.0, 11.0]
Solution:
public class NDimension { public static void main(String[] args) { double[] a={1,2,3}; double[] b={4,5,6}; double[] c={7,8,9}; double[] d={10,11}; ArrayList values=new ArrayList(); values.add( a ); // values.add( b ); // values.add( c ); values.add( d ); ArrayList<List<Double>> result=new ArrayList<>(); per(values,0,new ArrayList(),result); System.out.println("values.size: "+values.size()); System.out.println("result.size: "+result.size()); for(int i=0;i<result.size();i++){ List<Double> temp=result.get(i); System.out.println(temp); } } public static void per(ArrayList<double[]> values, int index, ArrayList<Double> currentList,ArrayList<List<Double>> result) { if (index == values.size()) { //如果currentList已经完成,那么将其添加到result中,并返回上一次调用该函数处 List<Double> temp = new ArrayList<>(currentList); // System.out.println("currentList: " + currentList); result.add(temp); return; } double[] temp = values.get(index); index++; for (int i = 0; i < temp.length; i++) { // System.out.println("index:" + index + " value;" + temp[i]); currentList.add(temp[i]); // System.out.print(index); per(values, index, currentList, result); //当完成了currentList时,返回到此处,删除currentList最后一个元素,并继续递归 currentList.remove(currentList.size() - 1); } }}
流程图:
阅读全文
0 0
- 算法-NDimension
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- 算法
- symfony简单入门
- python2.x与3.x版本print的不同
- 数据结构 课程 总结
- DeepLearnToolbox-master cnn注释
- 防止谷歌浏览器记住输入信息
- 算法-NDimension
- 任务计划
- k-means算法、性能及优化
- ionic cordova-plugin-file-transfer插件 Skipping 'cordova-plugin-file' for android
- 数据库后台数据在前台ECharts显示
- 浅谈MOSFET驱动电路
- 将项目打包成jar,将jar还原成项目
- 使用iText库创建PDF文件
- Android低功耗蓝牙译文(五)