穿着西裤做的网站,企业解决方案部,有没有网址免费的,做网站的毕业答辩ppt实例题目背景
在峰会期间#xff0c;武装部队得处于高度戒备。警察将监视每一条大街#xff0c;军队将保卫建筑物#xff0c;领空将布满了 F-2003 飞机。
此外#xff0c;巡洋船只和舰队将被派去保护海岸线。不幸的是#xff0c;因为种种原因#xff0c;国防海军部仅有很少…题目背景
在峰会期间武装部队得处于高度戒备。警察将监视每一条大街军队将保卫建筑物领空将布满了 F-2003 飞机。
此外巡洋船只和舰队将被派去保护海岸线。不幸的是因为种种原因国防海军部仅有很少的几位军官能指挥大型海战。因此他们培养了一些新海军指挥官。军官们选择了“海战”游戏来帮助他们学习。
题目描述
在一个方形的盘上放置了固定数量和形状的船只每只船却不能碰到其它的船。在本题中我们认为船是方形的所有的船只都是由图形组成的方形。
求出该棋盘上放置的船只的总数。
输入格式
第一行为两个整数 R 和 C用空格隔开分别表示游戏棋盘的行数和列数。
接下来 R 行每行 C 个字符为 # 或 .。# 表示船只的一部分. 表示水。
输出格式
一行一个字符串如果船的位置放得正确即棋盘上只存在相互之间不能接触的方形如果两个 # 号上下相邻或左右相邻却分属两艘不同的船只则称这两艘船相互接触了。就输出 There are S ships.S 表示船只的数量。否则输出 Bad placement.。
输入输出样例
输入 #1复制
6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#
输出 #1复制
There are 5 ships.
思路
用dfs判断相邻用pd判断合法在main函数里统计船的数量
#includebits/stdc.h
using namespace std;
int r,c,s0;
int dx[4]{0,-1,1,0},dy[4]{-1,0,0,1};
char a[1005][1005];
void dfs(int x,int y)
{a[x][y]%;for(int i0;i4;i){if(xdx[i]0xdx[i]rydy[i]0ydy[i]ca[xdx[i]][ydy[i]]#)dfs(xdx[i],ydy[i]);}
}
bool pd(int i,int j)
{int cnt0;if(a[i][j]#)cnt;if(a[i1][j]#)cnt;if(a[i][j1]#)cnt;if(a[i1][j1]#)cnt;if(cnt3)return false;return true;
}
int main()
{cinrc;for(int i1;ir;i){for(int j1;jc;j)cina[i][j];}for(int i1;ir;i){for(int j1;jc;j){if(irjcpd(i,j)0){coutBad placement.;return 0;}}}for(int i1;ir;i){for(int j1;jc;j){if(a[i][j]#){s;dfs(i,j);}}}coutThere are s ships.;return 0;
}