2011年11月7日月曜日

TopCoder SRM231 Div2 450Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。問題文のおおまかな和訳については、後日掲載するものとして、ひとまず解答だけ載せておく。

public class Stitch {
 public String[] stitch(String[] A, String[] B, int overlap) {
  String[] blended = new String[A.length];
  for( int i=0 ; i<A.length ; i++ ){
   blended[i] = A[i].substring(0, A[i].length()-overlap);
   for( int j=1 ; j<=overlap ; j++ ){
    double val = ((overlap+1.0-j)*A[i].charAt(A[i].length()-overlap+j-1)+
                 j*B[i].charAt(j-1))/(overlap+1);
    char cval = (char)Math.round(val);
    blended[i] += cval;
   }
   blended[i] += B[i].substring(overlap);
  }
  return blended;
 }
}

昔解いた問題を下書きに置きっぱなしにしておくのももったいないので、掲載することにした。

0 件のコメント:

コメントを投稿

フォロワー

ページビューの合計