AOJ 0118
2015-10-28 12:32
218 查看
链接:点击打开链接
题意:有三种水果分别用,'@','*','#'三种符号表示,上下左右相连的同种水果被看做是一个区域,问一共有多少个区域
代码:
题意:有三种水果分别用,'@','*','#'三种符号表示,上下左右相连的同种水果被看做是一个区域,问一共有多少个区域
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char S[105][105]; int xx[]={0,-1,0,1}; int yy[]={-1,0,1,0}; int N,M; void dfs(int x,int y,char temp_c){ //同种水果再dfs,因此加上一个参数代表水果种类 int i,j,temp_x,temp_y; S[x][y]='.'; for(i=0;i<4;i++) for(j=0;j<4;j++){ temp_x=x+xx[i]; temp_y=y+yy[i]; if(S[temp_x][temp_y]!=temp_c||temp_x<0||temp_x>=N||temp_y<0||temp_y>=M) continue; dfs(temp_x,temp_y,temp_c); } } int main(){ int i,j,sum; while(cin>>N>>M&&(N||M)){ sum=0; for(i=0;i<N;i++) for(j=0;j<M;j++) cin>>S[i][j]; for(i=0;i<N;i++) for(j=0;j<M;j++) if(S[i][j]!='.'){ dfs(i,j,S[i][j]); sum++; } printf("%d\n",sum); } return 0; }
相关文章推荐
- aupe学习记录
- HLG 1038 菜鸟和大牛 递推
- Ajax与struts2实现过程中出现ServletActionContext找不到的情况
- MyBatis快速入门
- istringstream、ostringstream、stringstream
- codeforces 589D (简单线性公式题目)
- Vertica 业务用户指定资源池加载数据
- android 使用Shape绘制实用圆圈
- LintCode_O(1)检测2的幂次
- Android学习它山之石:开源学习网站整理
- 数据库实验NetMusicShop(二)
- OOP 多态和构造器执行顺序
- css3选择器
- 使用NSUserDefault存储数据
- 【Alpha】特殊情况通知
- 【转】fread函数和fwrite函数
- Android开发工程师必看面试题:(一)
- JS_控制输入,只能键入数字
- UIScrollew笔记
- 《跨界杂谈》商业模式(两)信仰