现在,我们用大炮来打蚊子:蚊子分布在一个M×N格的二维平面上,每只蚊子占据一格。向该平面的任意位置发射炮弹,炮弹的杀伤范围如下示意:
O
OXO
O
其中,X为炮弹落点中心,O为紧靠中心的四个有杀伤力的格子范围。若蚊子被炮弹命中(位于X格),一击毙命,若仅被杀伤(位于O格),则损失一半的生命力。也就是说,一次命中或者两次杀伤均可消灭蚊子。现在给出蚊子的分布情况以及连续k发炮弹的落点,给出每炮消灭的蚊子数。
输入格式:
第一行为两个不超过20的正整数M和N,中间空一格,表示二维平面有M行、N列。
接下来M行,每行有N个0或者#字符,其中#表示所在格子有蚊子。
接下来一行,包含一个不超过400的正整数k,表示发射炮弹的数量。
最后k行,每行包括一发炮弹的整数坐标x和y(0≤x<M,0≤y<N),之间用一个空格间隔。
输出格式:
对应输入的k发炮弹,输出共有k行,第i行即第i发炮弹消灭的蚊子数。
输入样例:
5 6
00#00#
000###
00#000
000000
00#000
2
1 2
1 4
输出样例:
0
2
我的代码如下:
#include
#include
using namespace std;
char **map;
int n,m;
void fa(int& x,int& y)
{
int shu=0;
if(map[x][y] == '#'||map[x][y] == '1'){
shu++;
map[x][y] = '0';
}
if(x+1 {
if(map[x+1][y] == '#')
map[x+1][y] = '1';
else if(map[x+1][y]=='1')
{
map[x+1][y] = '0';
shu++;
}
}
if(x-1>=0 && (map[x-1][y]=='#'||map[x-1][y]=='1'))
{
if(map[x-1][y] == '#')
map[x-1][y] = '1';
else if(map[x-1][y]=='1')
{
map[x-1][y] = '0';
shu++;
}
}
if(y+1 {
if(map[x][y+1] == '#')
map[x][y+1] = '1';
else if(map[x][y+1]=='1')
{
map[x][y+1] = '0';
shu++;
}
}
if(y-1>=0 && (map[x][y-1]=='#'||map[x][y-1]=='1'))
{
if(map[x][y-1] == '#')
map[x][y-1] = '1';
else if(map[x][y-1]=='1')
{
map[x][y-1] = '0';
shu++;
}
}
cout< }
int main()
{
ifstream cin("in.txt");
cin>>n>>m;
map = new char*[n];
for(int i=0;i map[i] = new char[m];
for(int i=0;i {
for(int j=0;j cin>>map[i][j];
}
int size;
cin>>size;
while(size--)
{
int x,y;
cin>>x>>y;
fa(x,y);
}
for(int i=0;i<n;i++)
delete []map[i];
return 0;
}
你这里拷贝错误,重粘一下:
}cout< }
int main(){
晕了,粘贴错误太多了。把代码放到代码片里。点工具栏代码片。
这些都是:
for(int i=0;i map[i] = new char[m];
for(int i=0;i {
for(int j=0;j cin>>map[i][j];
}
代码粘的有问题,请重新粘贴完整代码。。。并且说明你的问题是在什么时候出错的///