member SRM458 DIV2

rate 1061->1003

  ( ^ω^) …
  (⊃⊂)
問題 結果 備考
250 failed system test
500 opened
950 opened

1撃墜、1失敗で+25

250 - Desertification

『砂漠と森があります。1年経つと砂漠に隣接している森は砂漠化します。T年後の砂漠マスの数を返せ。』

import java.util.*; 
public class Desertification { 
    public int desertArea(String[] is, int T) { 
  boolean a = false; 
  for(String s: is){ 
      if(s.contains("D")) 
    a = true; 
  } 
  if(!a) return 0; 
  if(a && T>25) return (is.length * is[0].length());  
  char[][] now = new char[is.length][is[0].length()]; 
  char[][] nex = new char[is.length][is[0].length()]; 
  for(int i=0; i<is.length; i++){ 
      now[i] = is[i].toCharArray(); 
      nex[i] = is[i].toCharArray(); 
  } 
  for(int i=0; i<T; i++){ 
      for(int j=0; j<is.length; j++){ 
    for(int k=0; k<is[0].length(); k++){ 
        if(now[j][k]=='D'){ 
      if(j-1>=0) nex[j-1][k]='D'; 
      if(j+1<is[0].length()) nex[j+1][k]='D'; //まちがい
      //if(j+1<is.length) nex[j+1][k]='D';    //せいかい
      if(k-1>=0) nex[j][k-1]='D'; 
      if(k+1<is[0].length()) nex[j][k+1]='D'; 
        } 
    } 
      } 
      for(int j=0; j<now.length; j++){ 
    for(int k=0; k<now[0].length; k++){ 
        now[j][k] = nex[j][k]; 
    } 
      } 
  } 
  int res=0; 
  for(int i=0; i<now.length; i++){ 
      for(int j=0; j<now[0].length; j++){ 
    if(now[i][j]=='D') res++; 
      }  
  } 
  return res; 
  } 
}


泣いた。