一个算法题,研究下看怎么解?

假设有一个正方形的城市,被划分为n行n列的单元格,每个单元格可以放置墙或激光塔。如果中间没有墙隔开,同一水平行或垂直列中不能放置超过一个激光塔。我们的目标是在城市内建立尽可能多的激光塔。请完成下面一个算法:
C/C++ code
?
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;
}

你可能感兴趣的:(java)