很有意思的题目 难度:easy~medium
Question あなたは今、とある戦略ゲームをプレイしています。 ゲームの中で、敵を攻撃するために、フィールドに爆弾を仕掛けました。 敵がフィールド内に入ったところで一気に爆弾を点火し、敵に攻撃をする寸法です。
フィールドは縦 H 行、横 W 行のマス目としてあらわされ、これらのマス目のうちのいくつかに爆弾が仕掛けてあります。 i 行目、j 列目の爆弾が爆発すると、i 行目全体と j 列目全体に爆風が広がります。 あなたはすでにフィールド上に爆弾を仕掛け終わりました。 フィールド上の爆弾を一気に点火した場合、いくつのマスに爆風が広がるかを計算してください。
例えば、入力例 1 では以下のマスに爆風が広がるため、求めるべきマス目数は 12 になります。
1 2 3 4 5 6 入力例1 4 4 #.#. .... ..#. ....
1 2 3 4 5 6 7 入力例2 5 8 .#.#.... ........ ........ ........ .....#..
Notice 1.需要注意读取有十位数百位数以上。 2.js中字符串不能改变,改成数组
Answer 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 process.stdin.resume(); process.stdin.setEncoding('utf8' ); var lines = [];var reader = require ('readline' ).createInterface({input : process.stdin,output : process.stdout}); reader.on('line' , (line ) => { lines.push(line); }); reader.on('close' , () => { var N=lines[0 ];var n = N.substring(0 , N.indexOf(" " ));var m = N.substring(N.indexOf(" " )+1 ,N.length);const coor = [];for (let i=1 ;i<=n;i++){ for (let j=0 ; j<=m;j++){ if (lines[i][j]=='#' ){ coor.push([i,j]); } } } const result=[];for (let i=0 ;i<=n;i++){ result.push(lines[i].split('' )); } for (let i=0 ;i<coor.length;i++){ var x=coor[i][0 ]; for (let j=0 ;j<m;j++){ result[x][j]='#' ; } } for (let i=0 ;i<coor.length;i++){ var y= coor[i][1 ]; for (let j=1 ;j<=n;j++){ if (result[j][y]!='#' ){ result[j][y]='#' ; } } } var z = 0 ;for (let i=0 ;i<=n;i++){ for (let j=0 ;j<=m;j++){ if (result[i][j]=='#' ){ z++; } } } console .log(z);});