importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Arrays;importjava.util.StringTokenizer;publicclassMain{publicstaticvoidmain(String[]args)throwsNumberFormatException,IOException{// TODO Auto-generated method stubBufferedReaderrb=newBufferedReader(newInputStreamReader(System.in));inttestNum=Integer.parseInt(rb.readLine());for(intt=0;t<testNum;t++){StringTokenizertoken=newStringTokenizer(rb.readLine());intarr[]=newint[Integer.parseInt(token.nextToken())];intquantNum=Integer.parseInt(token.nextToken());token=newStringTokenizer(rb.readLine());for(inti=0;i<arr.length;i++){arr[i]=Integer.parseInt(token.nextToken());}Quantizationquantization=newQuantization(arr);System.out.println(quantization.quantize(0,quantNum));}}}//양자화를 할 때 classQuantization{int[]arr;// x 위치에서 y길이만큼 값을 설정 했을 때 결과 값int[][]cache=newint[101][11];publicQuantization(int[]arr){this.arr=arr;for(inti=0;i<cache.length;i++){Arrays.fill(cache[i],-1);}Arrays.sort(this.arr);}// 분할 개수intquantize(intstart,intquant){if(cache[start][quant]!=-1){returncache[start][quant];}// 양자수보다 남은 길이가 더 적을 때 모든 양자화 완료if(arr.length-start<=quant){return0;}// 양자화 수가 한개 남았을 때 계산if(quant==1){returngetMinError(start,arr.length-start);}//일정량 양자화 후 남은 길이,양자화가능수 재귀호출intret=Integer.MAX_VALUE;for(inti=start+1;i<=arr.length-quant;i++){intlen=i-start;ret=Math.min(ret,getMinError(start,len)+quantize(i,quant-1));}cache[start][quant]=ret;returnret;}// 양자화 결과값 리턴// start : 시작위치// size : 범위intgetMinError(intstart,intsize){intaver=0;for(inti=start;i<start+size;i++){aver+=arr[i];}aver/=size;intaverRet=0;for(inti=start;i<start+size;i++){averRet+=Math.pow(Math.abs(arr[i]-aver),2);}intaver1Ret=0;for(inti=start;i<start+size;i++){aver1Ret+=Math.pow(Math.abs(arr[i]-(aver+1)),2);}return(averRet>aver1Ret)?aver1Ret:averRet;}}// end Quantization
hth0893
여러개 예제입력을 추가해서 돌려봤는데 오류사항을 못찾겠어요
추가적인 예제입력이 어떤게 더 있을지 아니면 어느 부분이 잘못된건지 알고싶습니다
돌려본 예제 입력입니다.
7
10 3
3 3 3 1 2 3 2 2 2 1
9 3
1 744 755 4 897 902 890 6 777
2 3
9 8
1 2
9
3 2
7 8 9
4 1
7 8 9 10
4 2
1000 1000 500 400
예제입력 결과입니다.
0
651
0
0
1
6
5000
6년 전