1047 Student List for Course

本文介绍了一个简单的算法,用于处理学生选课数据,通过使用C++的vector容器,实现学生和课程之间的多对多关系存储。该算法读取学生数量、课程数量及每个学生所选课程,最终输出每门课程的学生名单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1047 Student List for Course (25 分)

思路

​ 没什么好说的 ,水题,

vector<vector<string> > C;

​ 搞定.

#include <cstdio>
#include <vector>
#include <algorithm>
#include <string>
#include <iostream>
using namespace std;



vector<vector<string> > C;
int std_cnt,c_cnt;
string temp_name;
int main(int argc, char const *argv[])
{
    scanf("%d %d",&std_cnt,&c_cnt);
    C.resize(c_cnt+1);
    for(int i=0;i<std_cnt;i++){
        cin>>temp_name;
        int cnt,c_idx;
        scanf("%d",&cnt);
        for(int j = 0; j < cnt; j++){
            scanf("%d",&c_idx);
            C[c_idx].push_back(temp_name);
        }
    }
    
    for(int i = 1; i <C.size(); i++){
        printf("%d %d\n",i,C[i].size());
        sort(C[i].begin(),C[i].end());
        for(int j = 0; j < C[i].size(); j++){
            printf("%s\n",C[i][j].c_str());
        }
    }
    
    return 0;
}

以下是Python代码实现: ```python class Student: def __init__(self, name, id): self.name = name self.id = id self.courses = [] def enroll(self, course): self.courses.append(course) def drop(self, course): self.courses.remove(course) def list_courses(self): print(f"{self.name}'s courses:") for course in self.courses: print(course.name) class Course: def __init__(self, name, teacher): self.name = name self.teacher = teacher self.students = [] def add_student(self, student): self.students.append(student) student.enroll(self) def remove_student(self, student): self.students.remove(student) student.drop(self) def list_students(self): print(f"Students enrolled in {self.name}:") for student in self.students: print(student.name) class Teacher: def __init__(self, name, id): self.name = name self.id = id self.courses = [] def add_course(self, course): self.courses.append(course) def remove_course(self, course): self.courses.remove(course) def list_courses(self): print(f"{self.name}'s courses:") for course in self.courses: print(course.name) ``` 使用示例: ```python # 创建学生、课程和教师实例 alice = Student("Alice", 1) bob = Student("Bob", 2) math = Course("Math", Teacher("Mr. Smith", 101)) english = Course("English", Teacher("Mrs. Johnson", 102)) mr_jones = Teacher("Mr. Jones", 103) # 学生选课 math.add_student(alice) math.add_student(bob) english.add_student(alice) # 教师管理课程 mr_jones.add_course(math) mr_jones.add_course(english) # 列出学生和课程信息 alice.list_courses() # Alice's courses: Math, English bob.list_courses() # Bob's courses: Math math.list_students() # Students enrolled in Math: Alice, Bob english.list_students() # Students enrolled in English: Alice mr_jones.list_courses() # Mr. Jones's courses: Math, English # 学生退课 math.remove_student(bob) bob.list_courses() # Bob's courses: math.list_students() # Students enrolled in Math: Alice ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值