JZOJ(中山纪中) 1985. 【普及组模拟赛】家族(family.pas/cpp)
2018-01-31 22:16
453 查看
题目:
http://blog.csdn.net/qq_35786326/article/details/79211488题意:
求在一个岛屿上,一共有几个家族
分析:
第一次评测时,小编自信预估100,结果却是100-100。。。尬,后面重新做了一次,发现广搜比深搜好用多了,这一道题目跟小编做过的细胞问题类似(对自己广搜不自信的,可以去看下,毕竟是道模版题)。而这题小编更加推荐使用广搜,因为这样要处理的细节要比深搜少得多代码:
#include<cstdio> #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #define LL long long using namespace std; inline LL read() { LL d=0,f=1;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();} return d*f; } string s[105];int len[105]; int n,head,tail,state[20001][2],dx[4]={-1,0,1,0},dy[4]={0,1,0,-1}; int main() { freopen("family.in","r",stdin); freopen("family.out","w",stdout); int t=0; scanf("%d",&n); char z; int j,x1,y1; for(int i=0;i<=n;i++) { while(z=getchar(),z!='\n') //读入 s[i]+=z; len[i]=s[i].size(); } for(int i=1;i<=n;i++) { for(int j=0;j<s[i].size();j++) if(s[i][j]>='a'&&s[i][j]<='z') { t++; s[i][j]='!'; state[1][0]=i;state[1][1]=j;head=0;tail=1; do { head++; for(int k=0;k<4;k++) { x1=state[head][0]+dx[k];y1=state[head][1]+dy[k];//广搜使用的队列 if(s[x1][y1]>='a'&&s[x1][y1]<='z'&&x1>0&&x1<=n&&y1>=0&&y1<len[x1])//当我们可以往这边走的限制条件 { tail++;s[x1][y1]='!';//随意将已经搜到过了的s[x1][y1]赋值为一个不为小写字母(如a)的字符(如A,!) state[tail][0]=x1;state[tail][1]=y1;//把x1,y1添加到队列中 } } } while(head<tail); } } printf("%d",t); fclose(stdin); fclose(stdout); return 0; }
相关文章推荐
- 【普及组模拟赛】家族(family.pas/cpp)//2018.1.26
- JZOJ(中山纪中) 1986. 【普及组模拟赛】作业(homework.pas/cpp)
- JZOJ(中山纪中) 1984. 【普及组模拟赛】游戏(atlantis.pas/cpp)
- 2018.01.26【NOIP普及组】模拟赛D组——家族(family.pas/cpp)
- JZOJ(中山纪中) 1983. 【普及组模拟赛】手机(mobile.pas/cpp)
- JZOJ(中山纪中)2018.01.21【NOIP普及组】模拟赛D组(第四题)
- jzoj 1731. 【10.5NOIP普及模拟】sum(sum.pas/cpp)
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第一题
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第二题
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第三题
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第四题
- JZOJ(中山纪中) 2018.02.01【NOIP普及组】模拟赛D组 第一题
- 2018.01.26【NOIP普及组】模拟赛D组——游戏(atlantis.pas/cpp)
- JZOJ(中山纪中) 2018.02.01【NOIP普及组】模拟赛D组 第二题
- JZOJ(中山纪中) 2018.02.01【NOIP普及组】模拟赛D组 第三题
- 2018.01.26【NOIP普及组】模拟赛D组——作业(homework.pas/cpp)
- JZOJ(中山纪中) 2018.01.26【NOIP普及组】模拟赛D组 第一题
- JZOJ(中山纪中) 2018.01.26【NOIP普及组】模拟赛D组 第二题
- JZOJ(中山纪中) 1591. 【普及模拟】游戏(j5.pas/cpp)