学生重新排队【华为OD机试JAVA&Python&C++&JS题解】

149 篇文章 245 订阅 ¥9.90 ¥99.00

一. 题目-学生重新排队

n个学生排成一排,学生编号分别是1到n,n为3的整倍数。老师随机抽签决定将所有学生分成m个3人的小组,n=3*m
为了便于同组学生交流,老师决定将小组成员安排到一起,也就是同组成员彼此相连,同组任意两个成员输入描述:之间无其它组的成员。
因此老师决定调整队伍,老师每次可以调整任何一名学生到队伍的任意位置,计为调整了一次,
请计算最少调整多少次可以达到目标。
注意:对于小组之间没有顺序要求,同组学生之间没有顺序要求。
两行字符串,空格分隔表示不同的学生编号
第一行是学生目前排队情况
第二行是随机抽签分组情况,从左开始每3个元素为一组
n 为学生的数量, n的范围为[3, 900], n一定为3的整倍数
第一行和第二行的元素个数一定相同
输出描述:

老师调整学生达到同组彼此相连的最小次数

补充说明:

同组相连: 同组任意两个成员之间无其它组的成员 ,比如有两个小组[4 5 6] [1 2 3],以下结果都满足要求

1 2 3 4 5 6

1 3 2 4 5 6

2 3 1 5 6 4

5 6 4 1 2 3

以下结果不满足要求

1 2 4 3 5 6, 4与5之间存在其它组的成员3

示例1

输入:

7 9 8 5 6 4 2 1 3
7 8 9 4 2 1 3 5 6
输出:

1
说明:

学生目前排队情况: 7 9 8 5 6 4 2 1 3
学生分组情况:[7 8

  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Python编程语言来实现学生成绩管理系统。你可以使用字典来表示每个学生的信息,其中包括姓名、语文成绩、数学成绩、英语成绩和总分。以下是一个示例实现: ```python # 新建学生成绩信息,并更新保存学生成绩信息的文件 def s_new(students): print('2. 新建学生信息') name = str(input('请输入学生的姓名:')) chinese = int(input('请输入学生的语文成绩:')) math = int(input('请输入学生的数学成绩:')) english = int(input('请输入学生的英语成绩:')) total = chinese + math + english stu = {'name': name, 'chinese': chinese, 'math': math, 'english': english, 'total': total} students.append(stu) s_write_to_file(students) # 删除给定姓名的学生成绩信息,并更新保存学生成绩信息的文件 def s_delete(students): print('4. 删除学生信息') name = input('请输入你要删除学生的姓名:') for stu in students: if name == stu['name']: students.remove(stu) break else: print('该学生不存在,请检查名字是否输入正确!') s_write_to_file(students) # 查询给定姓名的学生成绩信息 def s_find(students): print('3. 查询学生信息') name = input('请输入你要查询学生的姓名:') for stu in students: if name == stu['name']: print('姓名\t语文\t数学\t英语\t总分') print(f'{stu["name"]}\t{stu["chinese"]}\t{stu["math"]}\t{stu["english"]}\t{stu["total"]}') break else: print('该学生不存在,请检查名字是否输入正确!') s_write_to_file(students) # 保存学生成绩信息到文件 def s_write_to_file(students): # 将学生成绩信息保存到文件 pass students = [] # 调用相应的函数实现学生成绩管理系统的不同功能 s_new(students) # 新建学生成绩信息 s_find(students) # 查询学生成绩信息 s_delete(students) # 删除学生成绩信息 ``` 以上是一个简单的学生成绩管理系统的示例实现。你可以根据需要进行进一步的功能扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值