ブルーブリッジカップアルゴリズムのJava実装では、矩形ターゲットを改善します

質問アルゴリズムは、長方形のターゲットを改善します

リソースの制約
制限時間: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();
        }
    }
}

リリース1092元の記事 ウォンの賞賛5805 ビュー17万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104244300