PAT甲级-不定长vector、stl类型-1039 Course List for Student解题思路

1039 Course List for Student (25 分)

在这里插入图片描述
在这里插入图片描述

思路

重点就是不定长vector的使用,减少内存
还有通过哈希表,将name转换为数字

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 40010;
const int M = 26*26*26*10+1;
vector<int>selectcourse[M];

int getID(char a[])
{
    
    
    int id = 0;
    for(int i=0;i<3;i++)
        id = id*26 +(a[i]-'A');
    id =id*10+ a[3]-'0';
    return id;
}

int main(){
    
    
    char name[5];
    int n,k;
    cin>>n>>k;
    for(int i =0;i<k;i++)
    {
    
    
        int course,x;
        scanf("%d%d",&course,&x);

        for(int j =0;j<x;j++)
        {
    
    
            scanf("%s",name);
            int id = getID(name);
            selectcourse[id].push_back(course);
        }
    }
    for(int i =0;i<n;i++)
    {
    
    
        scanf("%s",name);
        int id =getID(name);
        sort(selectcourse[id].begin(),selectcourse[id].end());


        printf("%s %d",name,int(selectcourse[id].size()));
        for(int j=0;j<selectcourse[id].size();j++)
            printf(" %d",selectcourse[id][j]);
        cout<<endl;

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43999137/article/details/114651891
今日推荐