4 条题解
-
1
#include <bits/stdc++.h> using namespace std; int n,m,sum; char a[100][100]; //定义方向 int fx[10]={0,0,1,0,-1,1,-1,1,-1}; int fy[10]={0,1,0,-1,0,-1,1,1,-1}; //递归求解池塘个数 void fun(int x,int y){ a[x][y]='.';//初始化x,y点 for (int i=1;i<=8;i++){ int tx=x+fx[i]; int ty=y+fy[i]; //递归 if (a[tx][ty]=='W')fun(tx,ty); } } int main(){ //输入 cin>>n>>m; for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++)cin>>a[i][j]; } for (int i=1;i<=n;i++){ for (int j=1;j<=m;j++){ //判断a[i][j]是否是池塘 if (a[i][j]=='W'){ sum++; fun(i,j); } } } //输出 cout<<sum; return 0; }
-
1
这题很简单,把P431的代码搬过来,然后修改判断条件即可,dfs部分如下:(Python)
def dfs(x,y): global tab node=[[0,1],[1,0],[-1,0],[0,-1],[1,1],[-1,-1],[1,-1],[-1,1]] tab[x][y]='.' for i in node: tx=x+i[0] ty=y+i[1] if tx<0 or tx > a-1 or ty < 0 or ty >b-1: continue if tab[tx][ty] == 'W' and not vis[tx][ty]: vis[tx][ty]=1 dfs(tx,ty) return
-
1
本题要求输出池塘的个数。实际上,如果有一个地方有水但是没被之前的bfs搜索到,那么就可以认为这是一个新池塘,sum++, 并把这个池塘进行bfs,标记一下。
#include <bits/stdc++.h> using namespace std; struct Point{ int x, y; }; queue<Point> q; int n, m, dx[8]={-1, 0, 1, -1, 1, -1, 0, 1}, dy[8]={-1, -1, -1, 0, 0, 1, 1, 1}, diff[105][105], sum; char a[105][105]; void bfs(int w, int h){ q.push((Point){w, h}); while (q.size()){ Point now = q.front(); q.pop(); for (int i = 0; i < 8; i++){/*遍历8个方向*/ int nx = now.x + dx[i], ny = now.y + dy[i]; if (nx>=1&&nx<=n&&ny>=1&&ny<=m&&a[nx][ny]=='W'&&!diff[nx][ny]){ diff[nx][ny] = 1; q.push((Point){nx, ny}); } } } } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j]; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[i][j] == 'W' && !diff[i][j]){/*发现新池塘*/ bfs(i, j); sum++; } cout << sum; return 0; }
-
-3
写题解请注意 鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 432
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 52
- 已通过
- 44
- 上传者