信息学奥赛一本通题库 1185:单词排序 题解


这道题就是给定一个英文句子,把里面的单词按字典序排序,还要去重。排序,我选择冒泡排序,去重,我用C++自带的unique函数,它会返回去重后数组最后一个不重复的数的下标,使用前提是必须排序。

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
    string s[105], a;
    int n = 0;//一定要赋初值,否则“稻花香里说丰年,听取WA声一片”
    while (cin >> a)//一个一个读入单词,再放进s里 
        s[++ n] = a;
    for (int i = 1; i < n; i ++)
        for (int j = 1; j <= n - i; j ++)
            if (s[j] > s[j + 1])
                swap(s[j], s[j + 1]);//冒泡排序
    n = unique(s + 1, s + 1 + n) - (s + 1);//去重
    for (int i = 1; i <= n; i ++)
        cout << s[i] << endl;//最后输出答案
    //getchar();getchar();
    return 0;
}

Be will and be good!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM