2014-04-10 2 views
0

내 프로그램의 다른 메서드에서 생성 된 압축 된 압축 된 배열을 전달하는 압축 풀기 메서드를 만들어야합니다. 기본적으로 RLE입니다. 첫 번째 값은 값이 반복되는 횟수이고 두 번째 값은 값 자체입니다.for 루프를 사용하여 반바지 배열 [] []을 압축 해제하는 방법은 무엇입니까?

나는 루프 나 배열에있어서 최고는 아니지만 - 나는 더 잘할 수 있도록 노력하고 있습니다. 그래서 이번 임무의 마지막 부분은 저를 버리고 있습니다. 누구든지 올바른 방향으로 나를 도울 수 있습니까? "dcmpArray"- -

public static short[][] decompress(short[][] cmpArray){  
     int position = 1; 
     short[][] dcmpArray = new short[cmpArray.length][cmpArray.length]; 

     for(int i=0; i<cmpArray.length; i++){ 
      for(int j=0; j<cmpArray[0].length; j++){     


      } 
     } 

     return dcmpArray; 
} 

는 내가 새로운 배열에 들어오는 값을 할당 할 필요가 있음을 알고 그 루프의 내부에서 수행해야합니다. 값을 분리 한 다음 값을 새 배열에 몇 번 인쇄해야하는지 결정하는 데 문제가 있습니다. 나는 값이 인쇄되어야하는 인덱스의 위치를 ​​결정하기 위해 "위치"를 사용하려고했지만, 나는 뇌 방귀가 있어요 ..

+0

이 상황에서 2 차원 배열을 갖는 것은 이치에 맞지 않습니다. –

+0

길이가 어떻게 인코딩됩니까? 또한,'short [] [] dcmpArray = new short [cmpArray.length] [cmpArray.length];'는 아마도 잘못되었습니다. –

+0

(그리고 BTW, 위의 내용은 "무엇을 시도 했습니까?")에 대한 대답으로 적합하지 않습니다. –

답변

1

배열은 2 차원이 될 이유를 잘 모르겠지만, 대한

public static short[] decompress(short[] input) { 
    int outputLength = 0; 

    /* First we need to figure out how long the output is 
     going to be when uncompressed, so we iterate through 
     the input like we are would normally, but write no output, 
     instead computing the output length */ 

    //note the += 2; we want to skip the actual output 
    for(int i = 0; i < input.length; i += 2) { 
     outputLength += input[i]; //increment target length 
    } 

    /* Now that we know what the output size will be, 
     we can create an array to store it. */ 
    short[] output = new short[outputLength]; 

    /* Now iterate over the input, putting every other input short 
     into the output, duplicated the number of times of the current input 
     AKA: decompression of RLE */ 
    for(int i = 0, outOffset = 0; i< input.length; i += 2) { 
     for(int ii = 0; ii < input[i]; ii++) 
      output[ii + outOffset++] = input[i + 1]; 
    } 
    return output; 
} 

당신의 2 차원 배열은 단순히 입력 배열의 배열 인 경우, 단순히 절차를 수행 : 사용자가 지정한 같은 RLE와 반바지의 시리즈를 포함하는 1 차원 배열,이 압축을 해제하는 방법이 될 것입니다 각 입력 배열에.

+0

도움이 될뿐만 아니라 방법에 대한 의견을 설명 할 시간을 내 주셔서 감사합니다. 전반적인 목표는 배우는 것입니다! 귀하의 outputLength는 내 위치에 대해 가지고있는 생각이지만 당신의 것이 훨씬 낫습니다! – user3517473

관련 문제