当前位置: 首页 >> 程序设计 >> Java >> 笔试题: Java递归求解交错数组
 

笔试题: Java递归求解交错数组

作者:      来源:http://blog.csdn.net/Red_angelX     发表时间:2006-12-26     浏览次数:      字号:    

题目: 将一个交错数据合并为一个一维数组
输入: strJaggedArray[][], 由多个一维数组(长度不定,个数不定)组成的交错数组
输出: strArray[], 由strJaggedArray[r][c]中的元素以"&"为分隔符拼合而成, 是strJaggedArray中数组元素的无重复组合(不考虑顺序)

举例:
输入: strJaggedArray[0]=new string[] {"we","are","student"};
      strJaggedArray[1]=new string[] {"say","what"};
输出: strArray[]={"we&say","we&what","are&say","are&what","student&say","student&what"}

输入: strJaggedArray[0]=new string[] {"cs","app"};
      strJaggedArray[1]=new string[] {"good","cool","dev"};
      strJaggedArray[2]=new string[] {"king","of","the","world"};
输出: strArray[]={"cs&good&king","cs&good&of","cs&good&the","cs&good&world","cs&cool&king","cs&cool&of","cs&cool&the","cs&cool&world",...}

 

好久没玩玩TopCoder了,工作时间不允许,看到这样的题目多多少少有种熟悉的感觉....,如果现在再打TopCoder的话,因该比去年进步了很多了吧........

本来是C#的题,不过最近学JAVA又没书看,只好找题做了...

 


public class ExchangeArray {

    
/**
     * @Auth Red_angelX
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        String[][] strJaggedArray = new String[3][];
        strJaggedArray[
0= new String[] {"cs","app"};
        strJaggedArray[
1= new String[] {"good","cool","dev"};
        strJaggedArray[
2= new String[] {"king","of","the","world"};
        String[] strArray 
= Exchange(strJaggedArray);
        
for(int i=0; i< strArray.length ;i++)
        
{
        System.out.println(strArray[i]);
        }

    }

    
    
/**
     * 函数
     * 
@param strJaggedArray
     * 
@return
     
*/

    
public static String[] Exchange(String[][] strJaggedArray)
    
{
        String[][] temp 
= DoExchange(strJaggedArray);
        
return temp[0];        
    }

    
    
/**
     * 递归
     * 
@param strJaggedArray
     * 
@return
     
*/

    
private static String[][] DoExchange(String[][] strJaggedArray)
    
{
        
int len = strJaggedArray.length;
        
if(len >= 2)
        
{            
            
int len1 = strJaggedArray[0].length;
            
int len2 = strJaggedArray[1].length;
            
int newlen = len1*len2;
            String[] temp 
= new String[newlen];
            
int Index = 0;
            
for(int i=0;i<len1;i++)
            
{
                
for(int j=0;j<len2;j++)
                
{
                    temp[Index] 
= strJaggedArray[0][i] + "&"+strJaggedArray[1][j];
                    Index 
++;
                }

            }

            String[][] newArray 
= new String[len-1][];
            
for(int i=2;i<len;i++)
            
{
                newArray[i
-1= strJaggedArray[i];                            
            }

            newArray[
0= temp;
            
return DoExchange(newArray);
        }

        
else
        
{
        
return strJaggedArray;    
        }

    }


}

 

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •