简单dfs,输出时按照数字从大到小的顺序输出,数字大小相等则按字母由前往后的顺序输出。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int H,W;
char le[10000][10000];
int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
struct Point{char s;int ans=0;
};
void dfs(int x,int y)
{char str=le[x][y];le[x][y]='#';for(int i=0;i<4;i++){int dx=x+dir[i][0];int dy=y+dir[i][1];if(dx>=0 && dx<H && dy>=0 && dy<W && le[dx][dy]==str && le[dx][dy]!='#'){dfs(dx,dy);}}
}
bool cmp(Point a,Point b){if(a.ans==b.ans){return a.s<b.s;}return a.ans>b.ans;
}
int main()
{int n;scanf("%d",&n);int m=n;while(n--){Point p[1000];scanf("%d%d",&H,&W);int i,j;for(i=0;i<H;i++){for(j=0;j<W;j++){scanf(" %c",&le[i][j]);}}printf("World #%d\n",m-n);int used[200];memset(used,0,sizeof(used));int counter=0;for(i=0;i<H;i++){for(j=0;j<W;j++){if(le[i][j]>='a' && le [i][j] <='z'&& !used[le[i][j]]){used[le[i][j]]=1;p[counter].s=le[i][j];counter++;}}}for(int k=0;k<counter;k++){for(i=0;i<H;i++){for(j=0;j<W;j++){if(le[i][j] == p[k].s){dfs(i,j);p[k].ans++;}}}}sort(p,p+counter,cmp);for(int k=0;k<counter;k++){cout<<p[k].s<<": "<<p[k].ans<<endl;}}return 0;
}

转载于:https://www.cnblogs.com/Scale-the-heights/p/4322373.html

dfs-Rank the Languages相关推荐

  1. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  2. A - 棋盘问题 POJ - 1321(dfs)

    A - 棋盘问题 POJ - 1321 dfs 复杂度计算: dfs共进行a步,每步需要循环n次,复杂度为 a^n次方 首先是暴力 an*n,果然炸了 #include<cstdio> # ...

  3. CF-547E(Mike and Friends)后缀数组+线段树 AC自动机+DFS序+树状数组

    题目链接 题意 NNN个串,每次询问区间[L,R][L,R][L,R]中有多少子串SiS_iSi​ 思路 把NNN个串合成一个长字符串,对这个长字符串求后缀数组,包含SiS_iSi​的子串的heigh ...

  4. CodeForces - 1287D Numbers on Tree(dfs+stl)

    题目链接:点击查看 题目大意:给出一棵有根树,每个节点都有一个权值,代表的是在其子树中有多少个节点的val比他小,现在要求根据每个点的权值构造出1~n的val数列 题目分析:因为数据量不大,n只有2e ...

  5. UVA572 Oil Deposits DFS求解

    小白书上经典DFS题目. 1. 递归实现 // from: https://www.cnblogs.com/huaszjh/p/4686092.html#include <stdio.h> ...

  6. BZOJ2690: 字符串游戏(平衡树动态维护Dfs序)

    Description 给定N个仅有a~z组成的字符串ai,每个字符串都有一个权值vi,有M次操作,操作分三种: Cv x v':把第x个字符串的权值修改为v' Cs x a':把第x个字符串修改成a ...

  7. [COCI2017-2018#5] Pictionary(并查集+dfs)

    贼ex的一道,卡了本仙女整整7个小时orz 思路容易理解,but码力very重要orz 我愿意花五毛钱提升我的码力,换个脑子也行,不换脸这张脸生得俊俏 luogu传送door 题目 在宇宙一个不为人知 ...

  8. 解决markdown-it-prism未能正确加载Languages的BUG

    本文首发在我的个人博客:https://jlice.top/p/7vg1g/.欢迎大家前去参观,么么哒~ 在hexo博客同步至csdn - 木然轩一文中,我提到了prismjs在尝试渲染C++代码块时 ...

  9. python 拓扑排序 dfs bfs_图遍历算法之DFS/BFS

    在计算机科学, 图遍历(Tree Traversal,也称图搜索)是一系列图搜索的算法, 是单次访问树结构类型数据(tree data structure)中每个节点以便检查或更新的一系列机制.图遍历 ...

  10. python dfs算法_算法工程师技术路线图

    前言 这是一份写给公司算法组同事们的技术路线图,其目的主要是为大家在技术路线的成长方面提供一些方向指引,配套一些自我考核项,可以带着实践进行学习,加深理解和掌握. 内容上有一定的通用性,所以也分享到知 ...

最新文章

  1. 2021年大数据Flink(十一):流批一体API Source
  2. Banner长得丑,网站没朋友
  3. 李飞飞、颜宁等8位华人学者入选美国艺术与科学院院士,其中7位女性
  4. 【ASP.NET MVC 学习笔记】- 07 使用 Entity Framework
  5. boost::graph模块使用breadth_first_search()实现GGCL算法的测试程序
  6. Java分页查询工具类
  7. 阅读笔记,软件需求分析
  8. Shell——test 命令
  9. android gridview行分割线,Android中控件GridView实现设置行列分割线的方法示例
  10. Dockter:研究人员的容器图像生成器
  11. 【jvm】java jvm 报错 OutOfMemoryError: GC overhead limit exceeded
  12. VB快速查找大型文件中包含的字符串
  13. 第9月第6天 push pop动画 生成器模式(BUILDER)
  14. 自学c语言难,自学C语言/C++到底难在哪里?
  15. VS2010 如何调试进(step into)项目引用的第三方开源源代码,比如Qt源码
  16. 微信小程序登录流程 微信登录
  17. 忘了她,就像忘了一朵花
  18. 关于绝地求生某辅助白名单画中画逆向分析
  19. Excel将一个sheet页拆分多个
  20. 第一批财务自由的90后,都做对了什么?

热门文章

  1. 用户控件的后台代码关联使用CodeBehind还是CodeFile
  2. c++在调用类的时候不一定非得实例化对象哦,有时候你不写系统会为你默认生成一个临时实例对象哦~
  3. MATLAB的iptchecknargin函数详解
  4. linux 系统创建ora文件,手动创建oracle数据库
  5. 迷你世界维护服务器几点到几点,迷你世界服务器房间是什么 | 手游网游页游攻略大全...
  6. DPDK 中断机制(二十六)
  7. leetcode算法题--打家劫舍II
  8. mysql场景测试_【干货】不同场景下 如何进行MySQL迁移
  9. 用户信号量及其PV操作处理实际问题
  10. WePy 整合云开发