求二维数组的全排列组合,二位数组的自乘积问题
来源:互联网 发布:如何开淘宝网 编辑:程序博客网 时间:2024/06/05 02:09
CG在ETP基地的培训也有一段时间了,这期间也有几次考试,下面将要分享的是最近一次笔试的考试题目,该题算是JAVA考试的附加题,要求也很简单,下面是原题
二维数组的长度和初始值均由输入确定,如何求出此数组的全排列组合,
即:int a[X][X] = {{X,X,X},...}如下
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
或者是 int a[4][4] = {{1,2,3,4},{4,5,6,7},{7,8,9,10}}
计算a[3][3]的结果如下:
147,148,149
157,158,159
167,168,169
247,248,249
............
解决思路:
根据本题的算法复杂度可知3*3的二维数组可以有 3^3 = 27中输出结果,而利用这个结果进行不同的%和/运算,可以得到以下的周期变化的规律
//总输出结果数
int it = (int) Math.pow((a[0].length),(a.length)) -1;
//产生0-a[0].length周期为1变化规律
//以3为例:210210210210.....
it % a[0].length;
//产生0-a[0].length周期为a[0].length变化规律
//以3为例:222111000222111000
(it / a[0].length) % a[0].length;
//产生0-a[0].length周期为a[0].length * a[0].length变化规律
//以3为例:2222222221111111110000...
(it / a[0].length) / a[0].length % a[0].length;
以上规律则满足我们所需要的数组下标表示
JAVA代码如下:
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题:[算法]求二维数组的全排列组合,二位数组的自乘积问题
- 独立博客:李大仁博客
- 永久链接:http://www.lidaren.com/archives/693
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。
二维数组的长度和初始值均由输入确定,如何求出此数组的全排列组合,
即:int a[X][X] = {{X,X,X},...}如下
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
或者是 int a[4][4] = {{1,2,3,4},{4,5,6,7},{7,8,9,10}}
计算a[3][3]的结果如下:
147,148,149
157,158,159
167,168,169
247,248,249
............
解决思路:
根据本题的算法复杂度可知3*3的二维数组可以有 3^3 = 27中输出结果,而利用这个结果进行不同的%和/运算,可以得到以下的周期变化的规律
//总输出结果数
int it = (int) Math.pow((a[0].length),(a.length)) -1;
//产生0-a[0].length周期为1变化规律
//以3为例:210210210210.....
it % a[0].length;
//产生0-a[0].length周期为a[0].length变化规律
//以3为例:222111000222111000
(it / a[0].length) % a[0].length;
//产生0-a[0].length周期为a[0].length * a[0].length变化规律
//以3为例:2222222221111111110000...
(it / a[0].length) / a[0].length % a[0].length;
以上规律则满足我们所需要的数组下标表示
JAVA代码如下:
/*
*求二维数组的全排列组合
*by CG
*/
public static void main(String[] args) {
//测试数组
int a[][] = {{1 , 2 , 3 },{4 , 5 , 6 },{7 , 8 , 9}};
String s;
//总循环次数,控制循环量
int it = (int) Math.pow((a[0].length),(a.length)) -1;
while(it >= 0){
s = "";
//it % a[0].length;
//(it / a[0].length) % a[0].length;
//(it / a[0].length) / a[0].length % a[0].length;
//临时变量,保存迭代器
int temp = it;
for(int m = 0 ; m < a length mbr>
if(temp / a[0].length >= 0) {
s += a[m][temp % a[0].length];
temp /= a[0].length;
}
}
System.out.println(s);
it--;
}//while
}//main
--------------------------------------------------------------------------------------
- 版权声明:
- 如在本页面内无特别说明,本文内容均为[李大仁博客]原创,本文版权归[李大仁博客]所有。
- 欢迎转载,转载请务必在文章页面明显位置提供原文链接并注明出处。欢迎您在转载本文时保留本段声明。
- 文章标题:[算法]求二维数组的全排列组合,二位数组的自乘积问题
- 独立博客:李大仁博客
- 永久链接:http://www.lidaren.com/archives/693
--------------------------------------------------------------------------------------
以上内容由博客自动发布工具自动发布,最终显示内容和效果会与原文内容有所偏差,敬请谅解。
0 0
- 求二维数组的全排列组合,二位数组的自乘积问题
- 求数组元素的乘积
- 二维数组求周长的问题
- 二位数组详解以及二维数组的传递
- 简单二维数组的矩阵乘积
- 数组乘积--求除自身外,其它数的乘积并放到result数组相应的位置
- C++:数组排列组合的问题。
- 求一个数组元素的所有排列组合
- 【求一个数组元素的所有排列组合】
- 求数组的所有排列组合数
- 求子数组的最大乘积
- 求连续子数组的最大乘积
- 求子数组的最大乘积
- 求二维数组的鞍点
- 求二维数组的鞍点
- 求二维数组的鞍点
- 二维数组的问题
- 二维数组排列组合问题(不考虑顺序)
- 发布中小服务型企业展示ASP网站整站源代码
- 发布本地美容工作室ASP网站整站源代码
- MFC Edit control的用法
- 基于EXTJS+ASP的WEB桌面应用程序
- 实现简单的类似Lightbox效果的弹出对话框
- 求二维数组的全排列组合,二位数组的自乘积问题
- 使用Jquery原理实现一个简单的Ajax的支持JS类
- 使用递归位运算实现对字节的中心转置反转
- 【BLE-CC2640】CC2640之LED
- 使用JS实现的可变动态密码输入键盘控件源代码
- 使用VB.Net GDI+编程编写的3D魔方游戏程序
- 设置背景透明的窗体,GDI+绘制异形WINFORM
- 进入Windows管理的SYSTEM用户状态获得超级权限
- iOS开发之Objective-c的MD5/SHA1加密算法的实现