数据结构与算法-7-24 树种统计

发布于 / 刷题 / 0 条评论

这道题建议使用map来存储,使用set进行去重和排序,会大大减低代码书写难度。

这道题有几个需要注意的:

1,如果使用C++,读取一行必须使用getline(cin, str),因为名字中有空格。并且在读数据前使用getchar()吸收第一行数字和第二行数据之间的换行符

2,使用set插入数据:set.insert(),set迭代器:set<string>::iterator it,set迭代访问:it++。更加具体的set使用攻略,请点击:https://www.mmuaa.com/post/b9a637bded62f2a6.html

3,如果使用set进行排序去重,并使用printf输出C++STL的string类型变量,切记要使用c_str()函数将string转化成char*,否则输出乱码。

4,printf中输出%必须用转义符号:%%

啰嗦完毕,下面是代码:

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

int main(){
    map<string, int> mp;
    set<string> st;
    int n;
    cin >> n;
    getchar();  //吸收换行符
    for(int i = 0; i < n; i++){
        string str;
        getline(cin, str);    //读入一行
        mp[str]++;            //计数器累加
        st.insert(str);        //插入set,自动排序去重
    }
    for(set<string>::iterator it = st.begin(); it != st.end(); it++){
        //迭代访问
        printf("%s %.4f%%\n", (*it).c_str(), (double)mp[*it]/n*100);
    }
    return 0;
}

转载原创文章请注明,转载自: 斐斐のBlog » 数据结构与算法-7-24 树种统计
目前还没有评论,快来抢沙发吧~