论坛首页 Java企业应用论坛

一道算法题目,挑战自己。

浏览 13224 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-10-22  
@borland

思路很好,是我就想不到了,我用递归,卡死我了!

说说,你是怎么想到这方法的?
0 请登录后投票
   发表时间:2013-10-22  
borland 写道
jahu 写道
public  void test(){
		int[] inSize = new int[in.length] , inValue = new int[in.length];
		int listSize =1 ,s = 0, sizeValue = 0;
		for(int i = 0 ; i < in.length ; i ++){
			inValue[i] = in[i][0];
			s = in[i].length;
			listSize= listSize*s;
			inSize[i] = s-1;
		}
		s = in.length-1;
		int i = s , j=0, yu= 0;
		ArrayList<String> list = new ArrayList<>(listSize);
		System.out.println("循环次数 : "  + listSize) ;
		list.add(arrayToString(inValue));
		int forNumber = 1; 
		for( ; ; ){
			if(listSize == forNumber)
				break;
			j = forNumber;
			i = s;
			for( ; ; ){
				sizeValue = inSize[i];
				if(j > sizeValue){
					yu = j%sizeValue;
					j = j/sizeValue;
					inValue[i] = in[i][yu];
					i--;
				}else{
					inValue[i] = in[i][j];
					break;
				}
			}
			list.add(arrayToString(inValue));
			forNumber++;
			
		}
		System.out.println("循环次数 : " + forNumber); 
		System.out.println("list的大小  :"  + list.size()) ;
		System.out.println(list.toString()) ;
	}

 我的计算方式,

 

 

你的代码有个问题,当N和数组都比较大的时候listSize会溢出!

我可以进行分割,,也可以进行优化。

0 请登录后投票
   发表时间:2013-10-22   最后修改:2013-10-22
bnuep_regit 写道
@borland

思路很好,是我就想不到了,我用递归,卡死我了!

说说,你是怎么想到这方法的?


递归更简单,稍后贴代码!!

递归:

static void printRecursion()
	{
		String[][] data = {{"A", "B"}, {"a", "b"}, {"1", "2", "3"}};
		int len = 3;

		String[] result = new String[len];
		printRecursion(data, len, 0, result);
	}

	static void printRecursion(String[][] data, int len, int i, String[] result)
	{
		for (int j = 0; j < data[i].length; j++)
		{
			result[i] = data[i][j];
			if (i == len - 1)
			{
				System.out.println(Arrays.asList(result).toString());
			}
			else if (i < len - 1)
			{
				printRecursion(data, len, 1 + i, result);
			}
		}
	}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics