假设有一个正方形的城市,被划分为n行n列的单元格,每个单元格可以放置墙或激光塔。如果中间没有墙隔开,同一水平行或垂直列中不能放置超过一个激光塔。我们的目标是在城市内建立尽可能多的激光塔。请完成下面一个算法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/* city_map: 城市地图,包含city_scale×city_scale个单元格,按从上到下、从左到右形式记录各单元格,city_map[0]标识地图左上角的单元,city_map[city_scale - 1]表示右上角单元,city_map[city_scale * city_sclae - 1]表示右下角的单元,单元格取值:'W'表示墙,'.'表示空地,激光塔只能放在空地上,如 ..W. W... 左图所示的4×4地图,city_map取值为"..W.W........W.W",city_scale取值为4 .... .W.W city_sclae: 城市规模,指每行或每列的单元格数量 返回值:该城市能放置激光塔的最大数量,需确保激光塔之间不被互相摧毁 */ int max_laser_tower_count( const char *city_map, int city_scale) { //TODO: 此处添加自己的代码 return 0; } |