刷题
paiza --B096:爆弾の大爆発
paiza --B096:爆弾の大爆発:Tarvent 的个人学习与实践记录。

recordstudyコードテスト
很有意思的题目 难度:easy~medium
Question
あなたは今、とある戦略ゲームをプレイしています。 ゲームの中で、敵を攻撃するために、フィールドに爆弾を仕掛けました。 敵がフィールド内に入ったところで一気に爆弾を点火し、敵に攻撃をする寸法です。
フィールドは縦 H 行、横 W 行のマス目としてあらわされ、これらのマス目のうちのいくつかに爆弾が仕掛けてあります。 i 行目、j 列目の爆弾が爆発すると、i 行目全体と j 列目全体に爆風が広がります。 あなたはすでにフィールド上に爆弾を仕掛け終わりました。 フィールド上の爆弾を一気に点火した場合、いくつのマスに爆風が広がるかを計算してください。
例えば、入力例 1 では以下のマスに爆風が広がるため、求めるべきマス目数は 12 になります。
入力例1
4 4
#.#.
....
..#.
....
出力例1
12
入力例2
5 8
.#.#....
........
........
........
.....#..
25
Notice
1.需要注意读取有十位数百位数以上。 2.js中字符串不能改变,改成数组
Answer
process.stdin.resume();
process.stdin.setEncoding('utf8');
// 自分の得意な言語で
// Let's チャレンジ!!
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(''));
}//change to 数组
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++;
}
}
}//count z
console.log(z);
});