BFS,字符串,写在院赛之后
这天洛谷打卡是大凶,愣是没有想到真的是大凶
先开了道树的题目,愣是半天以为是并查集,结果第一题简单字符串也TM的抽了没做出来,最后一题用BFS做结果行列n,m写反过不了
题目,简单字符串:
题目懒得抄了,就TM的给两段字符串看移位,如234567891和123456789
就他妈的不知道字符串find,直接第一个字符串加自己,变成两倍,然后就可以查找第二段字符串在不在第一段里面(已给定长度相等)
就尼玛的三句话:1.s+=s;2.if(s.find(s2)!=string::npos) cout<<"YES";else cout<<"NO";3.我是傻逼;
字符串的x,y比不是坐标轴里的x,y,是他妈的行列,结果判断出界反了,****

#include <bits/stdc++.h> using namespace std; const int N=2e3+10; char g[N][N]; typedef pair<int,int> pii; queue<pii> q; int drex[4]={0,0,-1,1}; int drey[4]={-1,1,0,0}; int n,m; int cnt; void bfs(int i,int j) { q.push({i,j}); g[i][j]='0'; while(q.size()) { auto t=q.front(); q.pop(); for(int i=0;i<=3;i++) { int x=t.first+drex[i],y=t.second+drey[i]; if(x>=1&&x<=n&&y>=1&&y<=m&&g[x][y]>='1'&&g[x][y]<='9') { g[x][y]='0'; q.push({x,y}); } } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(g[i][j]>='1'&&g[i][j]<='9') { bfs(i,j); cnt++; } } } cout<<cnt; }
我无话可说,我是five

浙公网安备 33010602011771号