結果
問題 | No.179 塗り分け |
ユーザー |
![]() |
提出日時 | 2015-04-21 13:37:49 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 266 ms / 3,000 ms |
コード長 | 2,192 bytes |
コンパイル時間 | 2,326 ms |
コンパイル使用メモリ | 77,328 KB |
実行使用メモリ | 55,240 KB |
最終ジャッジ日時 | 2024-07-23 14:29:22 |
合計ジャッジ時間 | 11,449 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
import java.util.*; public class Main { public static void main(String[] args) throws Exception { Scanner koko = new Scanner(System.in); int h = koko.nextInt(); int w = koko.nextInt(); boolean [][] moto = new boolean[h][w]; boolean[][] color = new boolean[h][w]; String[] s = new String[h]; int count =0; for(int i=0; i<h; i++){ s[i] = koko.next(); char[] ss = s[i].toCharArray(); for(int j=0; j<w; j++){ if(ss[j]=='.'){ moto[i][j]=true; color[i][j]=true; count++; } } } boolean bflag = false; loop2: for(int i=0; i<h; i++){//ぬり平行移動(たて if(count==h*w){ break; } for(int j=-w+1; j<w; j++){//ぬり平行移動(よこ if(i!=0||j!=0){ for(int a=0; a<h; a++){ for(int b=0; b<w; b++){ color[a][b]=moto[a][b]; } } for(int k=0; k+i<h; k++){ for(int l=Math.max(0, -j); l<Math.min(w,w-j); l++){ if(!color[k][l]&&!color[k+i][l+j]){ color[k][l]=true; color[k+i][l+j]=true; } } } boolean flag = false; for(int m=0; m<h; m++){ for(int n=0; n<w; n++){ if(!color[m][n]){ flag = true; break; } } } if(!flag){ System.out.println("YES"); bflag = true; break loop2; } } } } if(!bflag){ System.out.println("NO"); } } }