pat 1039

该系统用于存储学生信息及其所选课程,通过输入学生姓名查询其所有课程,并按课程编号排序输出。

hash里存放学生,学生下面有课程构成链表,超时了%>_<%


#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#define SIZE 26*26*26*10 + 1
using namespace std;
int findname(char name[]){
<span style="white-space:pre">	</span>return (name[0] - 'A') * 26 * 26 * 10 + (name[1] - 'A') * 26 * 10 + (name[2] - 'A') * 10 + (name[3] - '0');
}
vector < int > name[SIZE];
int main(){
<span style="white-space:pre">	</span>int NumOfQury, NumOfCourse;
<span style="white-space:pre">	</span>freopen("1.in", "r", stdin);
<span style="white-space:pre">	</span>scanf("%d%d",&NumOfQury,&NumOfCourse);
<span style="white-space:pre">	</span>int i, j, StuEachCourse, index;
<span style="white-space:pre">	</span>char StuName[5];
<span style="white-space:pre">	</span>struct hasht *h;
<span style="white-space:pre">	</span>//h = initialize(SIZE);
<span style="white-space:pre">	</span>for (i = 1; i <= NumOfCourse; i++)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>scanf("%d%d", &index, &StuEachCourse);
<span style="white-space:pre">		</span>//cin >> index >> StuEachCourse;
<span style="white-space:pre">		</span>for (j = 1; j <= StuEachCourse; j++){
<span style="white-space:pre">			</span>scanf("%s", StuName);
<span style="white-space:pre">			</span>//cin >> StuName;
<span style="white-space:pre">			</span>name[findname(StuName)].push_back(index);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>int hname;
<span style="white-space:pre">	</span>vector<int>::iterator k;
<span style="white-space:pre">	</span>for (i = 1; i <= NumOfQury; i++){
<span style="white-space:pre">		</span>scanf("%s", StuName);
<span style="white-space:pre">		</span>//cin >> StuName;
<span style="white-space:pre">		</span>hname = findname(StuName);
<span style="white-space:pre">		</span>printf("%s %d", StuName, name[hname].size());
<span style="white-space:pre">		</span>//cout << StuName << " " << name[hname].size();
<span style="white-space:pre">		</span>sort(name[hname].begin(), name[hname].end());
<span style="white-space:pre">		</span>for (k = name[hname].begin(); k != name[hname].end(); k++)
<span style="white-space:pre">			</span>printf(" %d", *k);
<span style="white-space:pre">			</span>//cout << " " << *k;
<span style="white-space:pre">		</span>cout << endl;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值