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;
}
该系统用于存储学生信息及其所选课程,通过输入学生姓名查询其所有课程,并按课程编号排序输出。
566

被折叠的 条评论
为什么被折叠?



