codeforces 6B President's Office
来源:互联网 发布:ubuntu安装图形化界面 编辑:程序博客网 时间:2024/06/11 17:03
President of Berland has a very vast office-room, where, apart from him, work his subordinates. Each subordinate, as well as President himself, has his own desk of a unique colour. Each desk is rectangular, and its sides are parallel to the office walls. One day President decided to establish an assembly, of which all his deputies will be members. Unfortunately, he does not remember the exact amount of his deputies, but he remembers that the desk of each his deputy is adjacent to his own desk, that is to say, the two desks (President's and each deputy's) have a common side of a positive length.
The office-room plan can be viewed as a matrix with n rows and m columns. Each cell of this matrix is either empty, or contains a part of a desk. An uppercase Latin letter stands for each desk colour. The «period» character («.») stands for an empty cell.
The first line contains two separated by a space integer numbers n, m (1 ≤ n, m ≤ 100) — the length and the width of the office-room, and c character — the President's desk colour. The following n lines contain m characters each — the office-room description. It is guaranteed that the colour of each desk is unique, and each desk represents a continuous subrectangle of the given matrix. All colours are marked by uppercase Latin letters.
Print the only number — the amount of President's deputies.
题目大意就是,输入一个字符的矩阵表示办公室的布局,某个字符表示president的办公桌,求问他和他相邻的不同人有多少个(不包括8连通的相邻)。ps:已知办公室内,大家的桌子都是矩形的。
这题看输入,最大100*100,无脑扫描一遍就可以了。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <string>#include <stack>#include <map>#include <set>#include <queue>#include <algorithm>using namespace std;char mat[105][105];int main() { int n, m; char c; scanf("%d %d %c", &n, &m, &c); for (int i = 0; i < n; i++) scanf("%s", mat[i]); pair<int, int> lt(-1, -1); pair<int, int> rb(-1, -1); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (mat[i][j] == c){ rb = pair<int, int>(i, j); if (lt.first < 0) lt = pair<int, int>(i, j); } } } set<char> ans; for (int i = lt.first; i <= rb.first; i++) { for (int j = lt.second; j <= rb.second; j++) { if (i>0 && mat[i-1][j]!=c && mat[i-1][j]!='.') ans.insert(mat[i-1][j]); if (i< n-1 && mat[i+1][j]!=c && mat[i+1][j]!='.') ans.insert(mat[i+1][j]); if (j>0 && mat[i][j-1]!=c && mat[i][j-1]!='.') ans.insert(mat[i][j-1]); if (j<m-1 && mat[i][j+1]!=c && mat[i][j+1]!='.') ans.insert(mat[i][j+1]); } } printf("%d\n", ans.size()); return 0;}
- codeforces 6B. President's Office
- codeforces 6B President's Office
- Codeforces 6B. President's Office
- CodeForces 6B - President's Office
- CodeForces 6B President's Office
- CodeForces 6B President's Office
- 6B - President's Office
- Codeforces #6B. President's Office (DFS)
- CF 6 B - President's Office
- CF 6B President's Office
- Codeforces Beta Round #6 (Div. 2 Only) B. President's Office
- F - President's Office
- 【非常非常巧妙的暴搜】CodeForce 6B——President's Office
- NEFU要崛起——第5场 B - President's Office
- CF6B: President's Office(简单DFS)
- CodeForces 416E President's Path
- Codeforces 416E President's Path
- codeforces 416E. President's Path( graph dp)
- 治体质性低血压 中西医各有妙方
- 红光条码扫描枪和激光扫描枪有什么区别?购买条码扫描枪,盘点机时该如何选择。
- 985本科大二,计算机专业,为什么很多普通一本甚至二本三本的都比自己懂得多?
- 甜蜜蜜的歌词
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- codeforces 6B President's Office
- 东西中部和东北地区划分方法
- 第2次实验——算法基本功 与 综合思考
- 软件设计模式之单例模式(JAVA实现)
- Content is not allowed in trailing section
- C/C++学习之模板
- 每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches
- 黑马程序员_static(静态)详解
- redis的 rdb 和 aof 持久化的区别