uva123multimap的稳定排序和set的查找
来源:互联网 发布:python 二维高斯函数 编辑:程序博客网 时间:2024/04/29 17:29
这题刚开始自己撸了一发代码及其繁琐的代码,虽然AC了,但是感觉太烂了,
百度了一下,发下自己截取单词的部分写残了,写复杂了,
另外起初WA了一发,是因为不知道string自带的排序是不稳定排序。
另外这题最简单的做法是用set加上multimap,multimap自动在插入的时候进行排序,
而且是稳定排序,另外set自带的查找函数也省去了写查找了。
自己的代码:注释部分是自己截取字符串的繁琐的代码:
#include<iostream>#include<cstdio>#include<vector>#include<cstring>#include<queue>#include<cctype>#include<cmath>#include<algorithm>#include<sstream>#include<string>using namespace std;struct ss{ string key; char s[300]; int ai;}result[10010];int cmp(ss a,ss b){ if(a.key!=b.key) return a.key<b.key; else return a.ai<b.ai;}int main(){ char word[60][15]; char ss[300]; int wlen=0; while(gets(word[wlen])&&strcmp(word[wlen],"::")) {wlen++;} int rlen=0; while(gets(ss)) { for(int i=0;i<strlen(ss);i++) { if(isalpha(ss[i])) ss[i]=tolower(ss[i]); } // cout<<ss<<endl; for(int j=0;j<strlen(ss);j++) { char temp[20]; /* if(isalpha(ss[j])) { temp[len]=ss[j]; len++; } // cout<<temp<<endl; if((ss[j]==' '||ss[j]=='\0')&&len) { temp[len]='\0'; // cout<<temp<<endl; int k; for(k=0;k<wlen;k++) { if(strcmp(temp,word[k])==0) break; } if(k==wlen) { result[rlen].key=result[rlen].key+temp; strcpy(result[rlen].s,ss); // cout<<result[rlen].s<<endl;; for(int t=front;t<j;t++) { if(isalpha(result[rlen].s[t])) result[rlen].s[t]=toupper(result[rlen].s[t]); } result[rlen].ai=rlen; rlen++; } front=j; len=0; } */ if(!isalpha(ss[j])) continue; int tt=j; // char temp[20]; int len=0; while(isalpha(ss[tt])) { temp[len]=ss[tt]; len++; tt++; } temp[len]='\0'; int k; for(k=0;k<wlen;k++) { if(strcmp(temp,word[k])==0) break; } if(k==wlen) { result[rlen].key=result[rlen].key+temp; strcpy(result[rlen].s,ss); // cout<<result[rlen].s<<endl;; for(int t=j;t<tt;t++) { //if(isalpha(result[rlen].s[t])) result[rlen].s[t]=toupper(result[rlen].s[t]); } result[rlen].ai=rlen; rlen++; } j=tt; } } sort(result,result+rlen,cmp); // for(int i=0;i<rlen;i++) // cout<<result[i].s<<endl; // cout<<rlen<<endl; for(int i=0;i<rlen;i++) cout<<result[i].s<<endl; return 0;}容器代码:
#include<cstdio>#include<iostream>#include<vector>#include<queue>#include<algorithm>#include<string>#include<cstdlib>#include<map>#include<set>#include<cmath>#include<cstring>#include<cctype>#include<climits>#include<memory>using namespace std;#define LL long long#define INT (1<<31)-1;const int N=5000;int main(){ set<string> ignore; multimap<string,string> r; string t; while(getline(cin,t)&&t!="::") ignore.insert(t); while(getline(cin,t)) { for(int i=0;i<t.length();i++) t[i]=tolower(t[i]); for(int i=0;i<t.size();i++) { if(!isalpha(t[i])) continue; string t2; int j=i; while(isalpha(t[j])) { t2+=t[j]; j++; } if(!ignore.count(t2)) { for(int k=0;k<t2.size();k++) t2[k]=toupper(t2[k]); string t3=t; t3.replace(i,t2.size(),t2); r.insert(make_pair(t2,t3)); } i=j; } } for(map<string ,string> ::iterator i=r.begin();i!=r.end();i++) cout<<i->second<<endl; return 0;}
0 0
- uva123multimap的稳定排序和set的查找
- 3729:用set实现字符串的排序和查找
- 23、稳定的和不稳定的排序
- 稳定的排序算法
- 排序算法的稳定
- 稳定排序和不稳定排序的意义与分析
- map和set的排序
- map和set的排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 关于hdu1872的稳定排序
- 各种稳定的排序算法
- 稳定的奇偶数字排序
- 快速排序的稳定算法
- 排序的稳定与不稳定
- 怎样将不稳定排序变为稳定的排序
- 稳定排序和不稳定怕序算法的区别
- 排序和查找的库函数
- Linux环境下MySQL(二进制)自动安装脚本
- R720 disable hyperthreading
- 程序算法艺术与实践:经典排序算法之桶排序
- 黑盒测试方法实战举例
- SecureCRT 超时自动断开连接
- uva123multimap的稳定排序和set的查找
- WebView使用总结
- 谈谈怎么实现Oracle数据库分区表
- 项目问题处理反馈0806
- spring各jar包作用于spring常用注解
- JS中prototype详解
- 个人声明
- linux线程的线程ID与其进程ID
- 中谷教育04 Python运算符与表达式