codeforces 616C The Labyrinth
2016-01-27 14:50
351 查看
从‘ . ’出发,相邻点作为连通块整体考虑,周围的星星要加上这堆点的个数。
两次bfs,一次找连通块,一次找可达的星星‘ * ’
ps:1> 记得取模。
2>要用int 取然后赋给char,一起用%s输出。——为了偷懒直接用char型字符取模结果。。。╮(╯▽╰)╭
两次bfs,一次找连通块,一次找可达的星星‘ * ’
ps:1> 记得取模。
2>要用int 取然后赋给char,一起用%s输出。——为了偷懒直接用char型字符取模结果。。。╮(╯▽╰)╭
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int m,n; char a[1010][1010],b[1010][1010]; int vis[1010][1010]; int dx[4]={-1,0,0,1}; int dy[4]={0,-1,1,0}; int num[1010][1010]; /// bfs 找连通块 int findblock(int x,int y) { int ans=0; vis[x][y]=1; int xx,yy; for(int i=0;i<4;i++) { xx=x+dx[i]; yy=y+dy[i]; if(xx<0||yy<0||xx>=n||yy>=m) continue; if(vis[xx][yy]==1||a[xx][yy]=='*') continue; // cout<<xx<<" "<<yy<<endl; ans+=findblock(xx,yy); } //cout<<"ans=="<<ans<<endl; ans++; return ans; } /// bfs 找可达* void findstar(int x,int y,int ans,int k) { vis[x][y]=0; for(int i=0;i<4;i++) { int xx=x+dx[i]; int yy=y+dy[i]; if(xx<0||yy<0||xx>=n||yy>=m) continue; if(a[xx][yy]=='*'&&vis[xx][yy]!=k) { vis[xx][yy]=k; num[xx][yy]+=ans; //char x=num[xx][yy]+'0'; //cout<<xx<<" "<<yy<<" "<<x<<endl; } else if(a[xx][yy]=='.'&&vis[xx][yy]==1) { findstar(xx,yy,ans,k); } } } int main() { scanf("%d%d",&n,&m);/// n行m列 for(int i=0;i<n;i++) scanf("%s",a[i]); memset(vis,-1,sizeof(vis)); memset(num,0,sizeof(num)); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i][j]=='.'&&vis[i][j]==-1) {//cout<<"-1"<<endl; int ans=findblock(i,j); // cout<<" "<<i<<" "<<j<<" "<<ans<<endl; findstar(i,j,ans,i*m+j); } } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(a[i][j]=='*') { num[i][j]+=1; num[i][j]=num[i][j]-(num[i][j]/10)*10;/// 不可用 char 取模 b[i][j]=num[i][j]+'0'; } else b[i][j]='.'; } printf("%s\n",b[i]); } return 0; }
相关文章推荐
- jquery控制css的display
- AngularJS系列:7、表达式
- tinyMCE使用详解
- 内联函数系列
- iOS 9 添加白名单
- php 知乎爬虫
- 卸载Framework 2.0
- web工程jar包
- 2012.07.25 matlab小结
- mysql5.6.13通用二进制格式安装并使用amoeba实现对mysql5.6数据库读写分离
- Linux ALSA 声卡驱动之八:ASoc中的Platform
- 动态计算高度
- JS post跨域及js类定义及使用
- 20120824 profile location程序编写中c++总结
- 不用一句js代码初始化组件
- 文本去重第一步:基于内容的文本相似性计算
- MySql中的变量定义
- mysql5.6.13通用二进制格式安装并使用amoeba实现对mysql5.6数据库读写分离
- 文本去重第一步:基于内容的文本相似性计算
- 仿支付宝金额输入规则