题目链接:http://codeforces.com/contest/616/problem/C

题意就是 给你一个n行m列的图,让你求’*‘这个元素上下左右相连的连续的’.‘有多少(本身也算一个),每个’*‘的结果取模10。要是为’*‘输出结果,否则输出’.‘。

这个题目就是让你求连续的'.'联通块元素个数,求完一个联通块就把这个联通块标个记号(我设了ok[][]二维数组 表示这个位置的元素的联通块的标号,相连的则为同一个标号),之后这个联通块的每个元素的ans都为f(f为联通块元素个数),然后把这些dfs过的联通块标记为经过即可。当你求’*‘周围联通的’.‘个数的时候 判断上下左右的ok[][]数组是否一样,再加ans[][]答案就好。

代码如下:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set> using namespace std;
const int MAXN = 1e3 + ;
char map[MAXN][MAXN];
int tox[] = {- , , , } , toy[] = { , - , , } , m , n;
int ok[MAXN][MAXN] , f , cont[MAXN * MAXN];
typedef pair <int , int> P;
vector <P> v; bool judge(int x , int y) {
if(map[x][y] == '.' && !ok[x][y] && x >= && x < n && y >= && y < m) {
return true;
}
return false;
} void dfs(int x , int y) {
for(int i = ; i < ; i++) {
if(judge(x + tox[i] , y + toy[i])) {
v.push_back(P(x + tox[i] , y + toy[i]));
ok[x + tox[i]][y + toy[i]] = f;
dfs(x + tox[i] , y + toy[i]);
}
}
} int main()
{
f = ;
ios::sync_with_stdio(false);
set <int> s;
cin >> n >> m;
for(int i = ; i < n ; i++) {
cin >> map[i];
}
memset(ok , , sizeof(ok));
memset(cont , , sizeof(cont));
for(int i = ; i < n ; i++) {
for(int j = ; j < m ; j++) {
if(!ok[i][j] && map[i][j] == '.') {
ok[i][j] = f;
v.clear();
v.push_back(P(i , j));
dfs(i , j);
cont[f++] = v.size();
}
}
}
int temp = ;
for(int i = ; i < n ; i++) {
for(int j = ; j < m ; j++) {
if(map[i][j] == '*') {
temp = ;
s.clear();
for(int k = ; k < ; k++) {
int x = tox[k] + i , y = toy[k] + j;
if(map[x][y] == '.' && x >= && y >= && y < m && x < n) {
s.insert(ok[x][y]);
}
}
set<int>::iterator it = s.begin();
for( ; it != s.end() ; it++) {
temp += cont[int(*it)];
}
cout << temp % ;
}
else {
cout << '.';
}
}
cout << endl;
}
}

最新文章

  1. 浏览器内核、渲染引擎、js引擎
  2. ROS 不能再详细的安装教程
  3. 【转】在sqlserver下增加MYSQL的链接服务器,实现分布式数据库开发第一步
  4. 百度地图API自定义地图
  5. 【转】NGUI版虚拟摇杆
  6. Java排序算法(1)
  7. Visual Studio 2015支持为Linux构建应用
  8. leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
  9. 17--Box2D使用(三、触摸交互)
  10. MVC-01 概述
  11. 基础知识(10)- 部署应用程序和applet
  12. JavaWeb 环境搭建
  13. 函数原型属性-JavaScript深入浅出(三)
  14. [HTML/CSS]下拉菜单
  15. 【读书笔记】iOS-优化iOS Web应用
  16. ASP.NET MVC 计划任务(不使用外接程序,.net内部机制实现)
  17. python之pandas简单介绍及使用(一)
  18. nodejs 如何操作字节在内存中的位置问题 BE LE
  19. C/C++掌握技能(二)
  20. 一:cocos2dx 3.2 尚不支持cubeMap?二:光照需要shader实现

热门文章

  1. iOS开发:记录开发中遇到的编译或运行异常以及解决方案
  2. 编译pure-ftpd时提示错误Your MySQL client libraries aren&#39;t properly installed
  3. POI读取Word与Excel
  4. jquery仿邮箱文本输入框自动加载邮箱后缀
  5. Android下高斯模糊的算法和demo
  6. js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)
  7. iOS - NSLog、UncaughtException日志保存到文件
  8. PHP经验集锦
  9. Oracle EM 不能访问
  10. extjs form submit 总是执行failure