UVA, 10336 Rank the Languages
难点在于:递归函数和输出;
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
class Rank{
private:
int length,width,ans=0;
char c;
vector <char> v;
int a[26][1000];
map <char,int> m; //output
char field[1000][1000];
public:
void Readcase(){
cin>>width>>length;
for(int i=0;i<width;i++){
for(int j=0;j<length;j++){
cin>>field[i][j];
}
}
}
void Computing(){
for(int i=0;i<width;i++)
for(int j=0;j<length;j++){
vector<char>::iterator it=find(v.begin(),v.end(),field[i][j]);
if(it!=v.end()) continue; //找到了
else v.push_back(field[i][j]);
}
for(int i=0;i<v.size()-1;i++)
if(v[i]>v[i+1]) swap(v[i],v[i+1]);
for(int k=0;k<v.size();k++){
c=v[k];
for(int i=0;i<width;i++){
for(int j=0;j<length;j++){
if(field[i][j]==c){
dfs(i,j);
ans++;
}
}
}
m.insert(map<char,int>::value_type(c,ans));
ans=0;
}
}
void Output(){
int l=m.size(),max;
map<char,int>::iterator it3;
while(l--){
max=m.begin()->second;
for(map<char,int>::iterator it2=m.begin();it2!=m.end();it2++){
if(it2->second>max) max=it2->second;
}
for(it3=m.begin();it3!=m.end();it3++){
if(max==it3->second) break;
}
cout<<it3->first<<": "<<it3->second<<endl;
m.erase(it3);
}
}
void dfs(int x,int y){
field[x][y]='*'; //标记这个地方已经找过了
if(0<=x&&x<width&&0<=y&&(y-1)<length&&field[x][y-1]==c){
dfs(x,y-1);
}
if(0<=x&&x<width&&0<=y&&(y+1)<length&&field[x][y+1]==c){
dfs(x,y+1);
}
if(0<=(x+1)&&(x+1)<width&&0<=y&&y<length&&field[x+1][y]==c){
dfs(x+1,y);
}
if(0<=(x-1)&&(x-1)<width&&0<=y&&y<length&&field[x-1][y]==c){
dfs(x-1,y);
}
}
};
int main()
{
int cases;
cin>>cases;
for(int i=1;i<=cases;i++){
Rank r;
r.Readcase();
r.Computing();
cout<<"World #"<<i<<endl;
r.Output();
}
return 0;
}
UVA, 10336 Rank the Languages的更多相关文章
- [uva] 1671 History of Languages
题目描述 输入两个DFA,判断是否等价. https://uva.onlinejudge.org/external/16/1671.pdf 输入 第一行T 可以接受的字母表 第二行N 状态数 接下去N ...
- UVA 10887 Concatenation of Languages 字符串hash
题目链接:传送门 题意: 给你两个集合A,B,任意组合成新的集合C(去重) 问你最后C集合大小 题解: 暴力 组成的新串hash起来 #include<bits/stdc++.h> usi ...
- OJ题解记录计划
容错声明: ①题目选自https://acm.ecnu.edu.cn/,不再检查题目删改情况 ②所有代码仅代表个人AC提交,不保证解法无误 E0001 A+B Problem First AC: 2 ...
- 2534: Uva10829L-gap字符串
2534: Uva10829L-gap字符串 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 66[Submit][Statu ...
- 几道hash题
1: UVa 10887 - Concatenation of Languages map 可以做 ,但是输入实在恶心,有空串之类的HASH模板: int Hash(char *s){ int s ...
- UVa 112 - Tree Summing(树的各路径求和,递归)
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...
- 图-用DFS求连通块- UVa 1103和用BFS求最短路-UVa816。
这道题目甚长, 代码也是甚长, 但是思路却不是太难.然而有好多代码实现的细节, 确是十分的巧妙. 对代码阅读能力, 代码理解能力, 代码实现能力, 代码实现技巧, DFS方法都大有裨益, 敬请有兴趣者 ...
- 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 ...
- Uva 120 - Stacks of Flapjacks(构造法)
UVA - 120 Stacks of Flapjacks Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld &a ...
随机推荐
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- IE6、7下html标签间存在空白符,导致渲染后占用多余空白位置的原因及解决方法
直接上图:原因:该div包含的内容是靠后台进行print操作,输出的.如果没有输出任何内容,浏览器会默认给该空白区域添加空白符.在IE6.7下,浏览器解析渲染时,会认为空白符也是占位置的,默认其具有字 ...
- 关于Unity3D自定义编辑器的学习
被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做). 刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...
- javascript的api设计原则
前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...
- 浅谈WEB页面提速(前端向)
记得面试现在这份工作的时候,一位领导语重心长地谈道——当今的世界是互联网的世界,IT企业之间的竞争是很激烈的,如果一个网页的加载和显示速度,相比别人的站点页面有那么0.1秒的提升,那也是很大的一个成就 ...
- ABP教程-打造一个《电话簿项目》-目录-MPA版本-基于ABP1.13版本
此系列文章会进行不定期的更新,应该会有6章左右. 感兴趣的朋友可以跟着看看,本教程适合已经看过ABP的文档但是又无从下手的小伙伴们. 初衷: 发布系列教程的原因是发现ABP在园子火了很久,但是发现还是 ...
- redux-undo
简介 通过包装reducer,创建一个state History,保留历史state,可以做退一步,进一步操作 1.install npm install --save redux-undo@beta ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...