自己给定一张地图和炸弹的初始位置,炸弹位置可移动,现在你需要移动炸弹使炸弹能够炸掉最多的敌人,炸弹一次可以炸掉一行和一列但是墙可以挡住炸弹。
给定的地图中#代表墙,G代表敌人,. 代表炸弹可以移动的地方,保证结果唯一。
在这个题目中,炸弹的位置可以移动,但并不是所有的位置炸弹都可以到达,炸弹只是可以在初始位置的情况下,沿着可以移动的位置移动。
以下是找路的函数(i,j是炸弹的初始位置)
int getnum(int i, int j) {
int num, x, y;
sum = 0;//sum用来计数(可以消灭的敌人数),所以需要初始化为0
//将坐标i,j复制到两个新变量x,y中,以便之后向上下左右4个方向统计可以消灭的敌人数
//向上统计可以消灭的敌人数
x = i; y = j;
while (a[x][y] != '#') {
//判断的点是不是墙,如果不是墙就继续
//如果当前的点是敌人,则进行计数
if (x < 0)//判断是否越界
break;
if (a[x][y] == 'G') {
sum++;
}
x--;//作用是继续向上统计
}
//向下统计可以消灭的敌人数
x = i; y = j;
while (a[x][y] != '#') {
//判断的点是不是墙,如果不是墙就继续
//如果当前的点是敌人,则进行计数
if (x > n)//判断是否越界
break;
if (a[x][y] == 'G') {
sum++;
}
x++;//作用是继续向下统计
}
//向左统计可以消灭的敌人数
x = i; y = j;
while (a[x][y] != '#') {
//判断的点是不是墙,如果不是墙就继续
//如果当前的点是敌人,则进行计数
if (y < 0)//判断是否越界
break;
if (a[x][y] == 'G') {
sum++;
}
if(y>0)
y--