【发布时间】:2021-12-07 17:38:31
【问题描述】:
标题不够清楚,但我会解释一下练习,以便您更好地理解。
在这个练习中,用户输入p 来表示炸弹的“威力”和爆炸地点的 10x10 地图(以字符形式)。并且“威力”根据爆炸半径减1。
输出应该是带有爆炸痕迹的地图和安全点的数量(地图上的零)
所以,输入:
3
O O O O O O O O O O
O X O O O O O O O O
O O O O O O O O O O
O O O O O O O O O O
O O O O O O O X O O
O O O O O O O O O O
O O O O O O O O O O
O O O X O O O O O O
O O O O O O O O O O
O O O O O O O O O O
输出应该是:
2 2 2 1 0 0 0 0 0 0
2 3 2 1 0 0 0 0 0 0
2 2 2 1 0 1 1 1 1 1
1 1 1 1 0 1 2 2 2 1
0 0 0 0 0 1 2 3 2 1
0 1 1 1 1 2 2 2 2 1
0 1 2 2 2 2 1 1 1 1
0 1 2 3 2 1 0 0 0 0
0 1 2 2 2 1 0 0 0 0
0 1 1 1 1 1 0 0 0 0
36
在受到不同炸弹伤害的地点,最终的价值是这些伤害的总和。
这是我的代码,它只读取输入 p 和字符映射,并将标记为“X”的位置替换为炸弹的威力。其余的都是0。
#include <stdio.h>
int main()
{
int map[10][10], p, i, j, safe;
char charmap[10][10];
scanf("%d", &p);
// int map is filled with 0
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
map[i][j] = 0;
// receives the char map, identifies where the Xs are located and in the same element, puts 'p' in the int map
for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
{
scanf(" %c", &charmap[i][j]);
if (charmap[i][j] == 'X')
map[i][j] = p;
}
// prints the int map where the Xs are switched by 'p' and the Os by zeros
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
printf("%d ", map[i][j]);
}
printf("\n");
}
return 0;
}
如何编写代码来添加爆炸半径?
【问题讨论】:
-
它可以在
O(w*h*log(w*h))中使用 2d 快速傅里叶变换来解决,但这可能是一种矫枉过正
标签: arrays c multidimensional-array