PAT甲級-1047 Student List for Course (25分)

本題不難,重點是找好存儲方式。
STL中vector聲明
1.vector< typename> name;//一維變長數組
typename可以是任何基本類型,int,double,char,結構體等
若想要初始化 eg.vector< typename> num(10);//圓括號

2.vector< typename>Arrayname[arraySize];
//vector數組,二維數組(一維固定,另一維變長)

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
char name[40001][5];//學生個數得滿足最大要求。末尾有‘\0‘ 
vector<int> course[2501];//相當於二維數組

bool cmp(int a,int b)
{
	return strcmp(name[a],name[b])<0;
}
int main()
{
	int n,k;//n個學生,k個課
	cin>>n>>k;
	int c,courseID;
	for(int i=0;i<n;i++)
	{
		scanf("%s %d",&name[i],&c);
		for(int j=0;j<c;j++)
		{
			scanf("%d",&courseID);
			course[courseID].push_back(i);
		}	
	} 
	for(int i=1;i<=k;i++)
	{
	    sort(course[i].begin(),course[i].end(),cmp);
		printf("%d %d\n",i,course[i].size());
		for(int j=0;j<course[i].size();j++)
		{
			printf("%s\n",name[course[i][j]]);
		}
	}
	return 0;//PAT規定加return 0 
}

總結:
1.聲明數組大小,要比規定範圍大1。例如5門課,數組應該申請爲6。因爲數組是從0開始的。
2.名字按照字典序排列,algorithm庫中的sort函數中的cmp重寫。

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