質問アルゴリズムは、長方形のターゲットを改善します
リソースの制約
制限時間:1.0秒メモリ制限:256.0メガバイトの
問題の説明
長方形の世界のすべてでは、長方形、長方形のターゲット銃、銃弾も長方形です。あなたはN与えられている銃のターゲットMを、しかし弾丸の大きさは(2L + 1)であるあなたを伝えるために(2R + 1)。図01は、各点01(ヒットしない0、1を表す)各ポイントのステータスが弾丸ヒットの中心であるかどうかを示す。点を中心に弾丸が当たったら、この時点で読み込まれます中心(2L + 1)(2R + 1)内の範囲上の点ターゲットを破壊しました。要求状態の最終目標出力します。
入力フォーマット
最初の行N、M、L、Rは、ターゲットの大きさ、及び弾丸の大きさを表します。
N読み取る以下 Mは01行列は、各ドットの中心は、弾丸が当たっているかどうかを示す
出力形式
N * M目標上の各点が破棄されるかどうかを示す01マトリックス
サンプル入力
4. 1. 1. 4
1000
0000
0000
0010
サンプル出力
1100である
1100
0111
0111
サンプル入力
7. 1. 1. 4
千
0000
0010
0000
0000
0000
0100
サンプル出力
1100がある
1111
0111
0111
0000
1110
1110
データサイズと表記
N、M <= 600、L 、R <= 5
package com.company;
import java.util.Scanner;
public class 矩形靶 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int l = sc.nextInt();
int r = sc.nextInt();
char [][] str = new char[n][m];
char[][] a = new char[n][m];
for (int i=0;i<n;i++){
String s = sc.nextLine();
if (s.equals("")){
s=sc.nextLine();
}
str[i]=s.toCharArray();
a[i]=s.toCharArray();
sc.close();
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (str[i][j]=='1'){
for (int i1=i-l<0?0:i-l;i1<=i+l&&i1<n;i1++){
for (int j1=j-r<0?0:j-r;j1<=j+r&&j1<m;j1++){
a[i1][j1]='1';
}
}
}
}
}
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}