T1185:单词排序
http://ybt.ssoier.cn:8088/problem_show.php?pid=1185
题目地址。
思路
这道题分为两个部分:1.排序 2。去重(简单版见Noip 明明的随机数)
两道题的区别是:本题为字符串排序。
去重算法:map
简介:一种c++STL模板,可以进行两种不同类型的转换:
例如本题,要用bool标记string类型,写法如下:
map <string,bool> m;
用法:m[“a”]=1 或者 m[a]=0;(第一个为字符串,第二个为变量)
模板:map<类型1,类型2> 变量名; 变量名[类型1]=类型2;
而字符串排序为sort(变量+1,变量+1+n);【规则一样,变量名后不必加[ ]】
详见:[对string类型sort]
(https://blog.csdn.net/qq_38946354/article/details/84948414)算了代码不贴了吧
代码如下
```cpp
#include<bits/stdc++.h>
using namespace std;
map <string,bool> m;
string s,ans[101];
int i;
int main()
{
std::cin.tie(0);//优化
std::cout.tie(0);
i=0;
while(cin>>s)//输入后要用ctrl+z【废话】
{
if(m[s]==0) //去重
{
m[s]=1;
i++;
ans[i]=s;
}
}
sort(ans+1,ans+1+i);//字符串与数组的无区别排序
for(int j=1;j<=i;j++)
{
cout<<ans[j]<<endl;//注意!第一个要用while,因为去掉个数不定(再来一个循环 【划掉】)
}
return 0;
}
有意见或建议,欢迎提出!~~~
该划掉呢还是划掉呢?
来源:CSDN
作者:nineqin
链接:https://blog.csdn.net/nineqin/article/details/104089794