1. 难点在于:递归函数和输出;
  1.  
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <map>
  5. using namespace std;
  6. class Rank{
  7. private:
  8. int length,width,ans=0;
  9. char c;
  10. vector <char> v;
  11. int a[26][1000];
  12. map <char,int> m; //output
  13. char field[1000][1000];
  14. public:
  15. void Readcase(){
  16. cin>>width>>length;
  17. for(int i=0;i<width;i++){
  18. for(int j=0;j<length;j++){
  19. cin>>field[i][j];
  20. }
  21. }
  22. }
  23. void Computing(){
  24. for(int i=0;i<width;i++)
  25. for(int j=0;j<length;j++){
  26. vector<char>::iterator it=find(v.begin(),v.end(),field[i][j]);
  27. if(it!=v.end()) continue; //找到了
  28. else v.push_back(field[i][j]);
  29. }
  30. for(int i=0;i<v.size()-1;i++)
  31. if(v[i]>v[i+1]) swap(v[i],v[i+1]);
  32. for(int k=0;k<v.size();k++){
  33. c=v[k];
  34. for(int i=0;i<width;i++){
  35. for(int j=0;j<length;j++){
  36. if(field[i][j]==c){
  37. dfs(i,j);
  38. ans++;
  39. }
  40. }
  41. }
  42. m.insert(map<char,int>::value_type(c,ans));
  43. ans=0;
  44. }
  45. }
  46. void Output(){
  47. int l=m.size(),max;
  48. map<char,int>::iterator it3;
  49. while(l--){
  50. max=m.begin()->second;
  51. for(map<char,int>::iterator it2=m.begin();it2!=m.end();it2++){
  52. if(it2->second>max) max=it2->second;
  53. }
  54. for(it3=m.begin();it3!=m.end();it3++){
  55. if(max==it3->second) break;
  56. }
  57. cout<<it3->first<<": "<<it3->second<<endl;
  58. m.erase(it3);
  59. }
  60. }
  61. void dfs(int x,int y){
  62. field[x][y]='*'; //标记这个地方已经找过了
  63. if(0<=x&&x<width&&0<=y&&(y-1)<length&&field[x][y-1]==c){
  64. dfs(x,y-1);
  65. }
  66. if(0<=x&&x<width&&0<=y&&(y+1)<length&&field[x][y+1]==c){
  67. dfs(x,y+1);
  68. }
  69. if(0<=(x+1)&&(x+1)<width&&0<=y&&y<length&&field[x+1][y]==c){
  70. dfs(x+1,y);
  71. }
  72. if(0<=(x-1)&&(x-1)<width&&0<=y&&y<length&&field[x-1][y]==c){
  73. dfs(x-1,y);
  74. }
  75. }
  76. };
  77. int main()
  78. {
  79. int cases;
  80. cin>>cases;
  81. for(int i=1;i<=cases;i++){
  82. Rank r;
  83. r.Readcase();
  84. r.Computing();
  85. cout<<"World #"<<i<<endl;
  86. r.Output();
  87. }
  88. return 0;
  89. }

UVA, 10336 Rank the Languages的更多相关文章

  1. [uva] 1671 History of Languages

    题目描述 输入两个DFA,判断是否等价. https://uva.onlinejudge.org/external/16/1671.pdf 输入 第一行T 可以接受的字母表 第二行N 状态数 接下去N ...

  2. UVA 10887 Concatenation of Languages 字符串hash

    题目链接:传送门 题意: 给你两个集合A,B,任意组合成新的集合C(去重) 问你最后C集合大小 题解: 暴力 组成的新串hash起来 #include<bits/stdc++.h> usi ...

  3. OJ题解记录计划

    容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001  A+B Problem First AC: 2 ...

  4. 2534: Uva10829L-gap字符串

    2534: Uva10829L-gap字符串 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 66[Submit][Statu ...

  5. 几道hash题

    1: UVa 10887 - Concatenation of Languages map 可以做 ,但是输入实在恶心,有空串之类的HASH模板: int Hash(char *s){   int s ...

  6. UVa 112 - Tree Summing(树的各路径求和,递归)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  7. 图-用DFS求连通块- UVa 1103和用BFS求最短路-UVa816。

    这道题目甚长, 代码也是甚长, 但是思路却不是太难.然而有好多代码实现的细节, 确是十分的巧妙. 对代码阅读能力, 代码理解能力, 代码实现能力, 代码实现技巧, DFS方法都大有裨益, 敬请有兴趣者 ...

  8. uva 387 A Puzzling Problem (回溯)

     A Puzzling Problem  The goal of this problem is to write a program which will take from 1 to 5 puzz ...

  9. Uva 120 - Stacks of Flapjacks(构造法)

    UVA - 120  Stacks of Flapjacks Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld &a ...

随机推荐

  1. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  2. Tomcat shutdown执行后无法退出进程问题排查及解决

    问题定位及排查 上周无意中调试程序在Linux上ps -ef|grep tomcat发现有许多tomcat的进程,当时因为没有影响系统运行就没当回事.而且我内心总觉得这可能是tomcat像nginx一 ...

  3. SQL Server 致程序员(容易忽略的错误)

    标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...

  4. TODO:搭建Laravel VueJS SemanticUI

    TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...

  5. ABP文档 - EntityFramework 集成

    文档目录 本节内容: Nuget 包 DbContext 仓储 默认仓储 自定义仓储 特定的仓储基类 自定义仓储示例 仓储最佳实践 ABP可使用任何ORM框架,它已经内置了EntityFrame(以下 ...

  6. 8.仿阿里云虚拟云服务器的FTP(包括FTP文件夹大小限制)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#iis 原文:http://dnt.dkill.net/Ar ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统 (源码购买说明)

    系列目录 升级日志 !!!重大版本更新:于2016-12-20日完成了系统的结构重构并合并简化了T4(这是一次重要的更新,不需要修改现有功能的代码),代码总行数比上个版本又少了1/3.更新了代码生成器 ...

  8. FragmentTabHost的基本用法

    开通博客以来已经约莫1个月了.几次想提笔写写东西,但总是由于各种各样的原因并没有开始.现在,年假刚结束,项目也还没有开始,但最终促使我写这篇博客的是,看了一篇博友写的新年计划,说是要在新的一年中写50 ...

  9. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  10. 5.0 JS中引用类型介绍

    其实,在前面的"js的六大数据类型"文章中稍微说了一下引用类型.前面我们说到js中有六大数据类型(五种基本数据类型 + 一种引用类型).下面的章节中,我们将详细讲解引用类型. 1. ...