PTA 數據結構與算法題目集(中文) 7-49 打印學生選課清單 (25分)題解


源代碼:https://github.com/yunwei37/myClassNotes
還有不少數據結構和算法相關的筆記以及pta題解哦x


卡時間卡的好嚴格的…

假設全校有最多40000名學生和最多2500門課程。現給出每門課的選課學生名單,要求輸出每個前來查詢的學生的選課清單。

輸入格式:

輸入的第一行是兩個正整數:N(≤40000),爲前來查詢課表的學生總數;K(≤2500),爲總課程數。此後順序給出課程1到K的選課學生名單。格式爲:對每一門課,首先在一行中輸出課程編號(簡單起見,課程從1到K編號)和選課學生總數(之間用空格分隔),之後在第二行給出學生名單,相鄰兩個學生名字用1個空格分隔。學生姓名由3個大寫英文字母+1位數字組成。選課信息之後,在一行內給出了N個前來查詢課表的學生的名字,相鄰兩個學生名字用1個空格分隔。

輸出格式:

對每位前來查詢課表的學生,首先輸出其名字,隨後在同一行中輸出一個正整數C,代表該生所選的課程門數,隨後按遞增順序輸出C個課程的編號。相鄰數據用1個空格分隔,注意行末不能輸出多餘空格。

輸入樣例:

10 5
1 4
ANN0 BOB5 JAY9 LOR6
2 7
ANN0 BOB5 FRA8 JAY9 JOE4 KAT3 LOR6
3 1
BOB5
4 7
BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
5 9
AMY7 ANN0 BOB5 DON2 FRA8 JAY9 KAT3 LOR6 ZOE1
ZOE1 ANN0 BOB5 JOE4 JAY9 FRA8 DON2 AMY7 KAT3 LOR6

輸出樣例:

ZOE1 2 4 5
ANN0 3 1 2 5
BOB5 5 1 2 3 4 5
JOE4 1 2
JAY9 4 1 2 4 5
FRA8 3 2 4 5
DON2 2 4 5
AMY7 1 5
KAT3 3 2 4 5
LOR6 4 1 2 4 5

//7-49 打印學生選課清單 (25 分)
#include<bits/stdc++.h>//萬能頭文件get 
using namespace std;
//參考: https://blog.csdn.net/Dream_Weave/article/details/81185805
//不使用優先隊列而在最後進行sort排序; 
map<string,vector<int> > mp;
//不能用cin... 
int main(){
    int n,m;
    scanf("%d%d",&n,&m);
    int k,id;
    char name[7];
    for(int i=0;i<m;i++){
        scanf("%d%d",&id,&k);
        for(int j=0;j<k;j++){
            scanf("%s",name);
            mp[name].push_back(id);
        }
    }
    vector<int> tpq;
    for(int i=0;i<n;i++){
            scanf("%s",name);
            tpq=mp[name];
            printf("%s",name);
            printf(" %d",tpq.size());
            sort(tpq.begin(),tpq.end());
        vector<int>::iterator tpq1=tpq.begin();
        while(tpq1!=tpq.end()){   
            printf(" %d",*tpq1);
            ++tpq1;
        }
        printf("\n");
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章