当前位置: 首页 > news >正文

做计划的网站可以做课程的网站

做计划的网站,可以做课程的网站,网页版拼多多商家版,app推广赚钱前言#xff1a; {\color{Blue}前言#xff1a;} 前言#xff1a; 本系列题使用的是#xff0c;“PTA中的团体程序设计天梯赛——练习集”的题库#xff0c;难度有L1、L2、L3三个等级#xff0c;分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度#xff0c;… 前言 {\color{Blue}前言} 前言 本系列题使用的是“PTA中的团体程序设计天梯赛——练习集”的题库难度有L1、L2、L3三个等级分别对应团体程序设计天梯赛的三个难度。更新取决于题目的难度和学校的事情但尽可能保证每日更新若没更新次日补上。这道题说实话有一点难度做了很长一段时间思路其实很简单但是细节很多所以要测试点全过就和找bug一样我的方法可能不是最简单的如有什么好的建议欢迎各位CSDN的朋友告诉我 题目 天梯赛每年有大量参赛队员要保证同一所学校的所有队员都不能相邻分配座位就成为一件比较麻烦的事情。为此我们制定如下策略假设某赛场有 N 所学校参赛第 i 所学校有 M[i] 支队伍每队 10 位参赛选手。令每校选手排成一列纵队第 i1 队的选手排在第 i 队选手之后。从第 1 所学校开始各校的第 1 位队员顺次入座然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的队伍还没有分配座位则需要安排他们的队员隔位就坐。本题就要求你编写程序自动为各校生成队员的座位号从 1 开始编号。 输入格式 输入在一行中给出参赛的高校数 N 不超过100的正整数第二行给出 N 个不超过10的正整数其中第 i 个数对应第 i 所高校的参赛队伍数数字间以空格分隔。 输出格式 从第 1 所高校的第 1 支队伍开始顺次输出队员的座位号。每队占一行座位号间以 1 个空格分隔行首尾不得有多余空格。另外每所高校的第一行按“#X”输出该校的编号X从 1 开始。 输入样例 3 3 4 2输出样例 #1 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61 63 65 67 69 71 73 75 77 79 #2 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 #3 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60题解 在开始看具体代码之前先总结下大致思路这道题的最大难点其实就在输出这一块我最先开始想尝试直接用一个大的循环去挨个输出这个结果但是发现出现了一个关键问题就是多出来的队伍的座位号不好处理然后我就转变了一下思路既然不好找到具体位置那我就先那个大的列表把所有输出都揽括进来再把座位号给装进去最后按题目要求进行输出吗即大致为三步 建立一个能把所有输出装进去的列表列表同时先加入高校编号 把座位号按题目要求装进结果列表 采用合适的方法输出结果列表 如果想先测试自己的代码是不是可以过所有测试点可以测试以下几组数据看下是否可以达到预期效果 1 13 2 2 23 1 2 2N int(input()) # 输入参赛的高校数 N M list(map(int, input().split())) # 输入每所高校的参赛队伍数以列表形式保存# 第一步建立一个能把所有输出装进去的列表列表同时先加入高校编号 result [] # 初始化结果列表for i in range(1, N 1): # 遍历高校编号result.append(# str(i)) # 添加高校编号for j in range(M[i - 1]):result.append([0] * 10) # 用列表的形式给座位号占位# 第二步把座位号按题目要求装进结果列表在装座位号之前肯定得先知道每个高校的第一个队伍的第一个人在结果列表中的位置 而最好的标志就是高校编号在结果列表中的位置 所以我们需要先找到这么一个数据然后将数据稍加分析我们会发现 每个高校的位置 上个高校的位置 上个高校的队伍数 1 而第一所高校的位置就是0且没有上一所高校 所以我们在初始化时就把它加进去 university_location_in_result [0] # 初始化高校编码在结果中的位置for i in range(1, N):university_location_in_result.append(university_location_in_result[i - 1] M[i - 1] 1) # 这一步解析见上面注释 上面是很明显必要的一步 完成这一步后我们开始对放入这一部进行分析 想放入座位号无非就是解决一个问题 result[i][j] ?,这个 ? 肯定是最好解决的 就是座位号从1加到最大数这一步肯定是最外层的“循环”然后来讨论这个 i 和 j 都和哪些条件有关 这里为了方便分析我们先简化这个题目并且使用不那么特殊的一个样例先将题目中的每队十人看成每队只有两个人 输入的样例为 3 1 3 2那么通过上一步可以找到高校编号的位置为别为0 2 6 然后模拟几步 result[1][0] 1 result[4][1] 4 result[3][0] 2 result[5][1] 5 result[4][0] 7 result[4][1] 9 result[5][0] 11 result[5][1] 13 result[7][0] 3 result[6][1] 6 result[8][0] 8 result[8][1] 10 不难发现 j 其实就是循环的每个队伍有多少人 当每个高校的第一个队伍循环完的时候j 就又重新开始循环了而到底要循环多少次即轮数则取决于队伍数最多的高校 现在便可以确定第二层“循环”是轮数 第三层“循环”是每队人数而一直变化的 i 则是最内层“循环” 且 i 高校编号位置 轮数 1 所以最内层“循环的是university_location_in_result以上大致思路就解决了但是有两个特殊点还没有考虑到 1. 新一轮开始的时候某一高校以及没有队伍了怎么办 2. 队伍最多的那个高校怎么使它多出来的队伍的位置都不相邻 这里解决的问题一 分析可得当 轮数 某个高校的队伍数 的时候 就不应该在对它的高校编号进行循环了 所以这两个数据是同存亡或者说相关联的 而且我们这里又不好去处理原来的列表综上我们将它们组成一个字典 又因为高校位置是肯定都不会一样的 所以用它做 键 team_information dict(zip(university_location_in_result, M)) # 也可以这么写team_information {team_location_in_result[i]:M[i] for i in range(N)}seat_number 1 # 初始化座位号 这里解决的是问题二 先把最多队伍高校的多余队伍找出来 然后根据不同的情况进行处理 M_1 [i for i in M if i ! max(M)] # 除开最大数的M列表difference_value 0 # 最大队伍数与第二大队伍书数之差if len(M_1) 0 and N 1:difference_value sum(M) # 这是“只有一个高校”的情况 elif len(M_1) len(M) - 1:difference_value max(M) - max(M_1) # 这是“只有一个队伍数最多的高校”的情况# ”其余情况“都等于0rounds 0 # 初始化轮数for rounds in range(max(team_information.values())): # 循环轮数if rounds in team_information.values(): # 当轮数等与某一高校数相同的时候删除该高校信息team_information {key: value for key, value in team_information.items() if value ! rounds}if seat_number (sum(M) - difference_value) * 10: # 这里不处理多余的队伍所以跳出去breakfor team_number in range(10): # 循环每队人数for university_location in team_information.keys(): # 循环高校位置并装入座位号result[university_location 1 rounds][team_number] seat_numberseat_number 1这里也有一个特殊点 就是当有多余队伍的高校是最后一个高校的时候 要多一个间隔 if max(M) M[N - 1] and N ! 1:seat_number 1 这是处理多余高校 for i in range(difference_value):for team_number in range(10):result[list(team_information.keys())[0] 1 rounds i][team_number] seat_number # 这个等式不知道怎么来的可以调试看下数据就能明白了seat_number 2# 第三步输出结果列表无非就两种元素类型 就不同情况输出就可以了 for i in result:if isinstance(i, str):print(i)else:print( .join(map(str, i)))
http://wiki.neutronadmin.com/news/436216/

相关文章:

  • 佛山建设公司网站wordpress运营
  • 网站建设合同管辖fw可以做网站
  • 要维护公司的网站该怎么做舟山网站建设优化
  • 怎样给网站做流量郑州有免费建网站的公司吗
  • 培训学校网站建设公司网站自己创建
  • 外贸网站如何制作好的响应式网站
  • 南京网站设计价格五寨网站建设
  • 网站制作在线版点击一个网站跳转到图片怎么做
  • 如何使用上线了app建设网站dede做招聘网站
  • 做网站哪种字体好看自己做的网站不备案不能访问吗
  • 免费建立手机网站如何在自己网站上做支付宝吗
  • wordpress建博客网站网站建设情况
  • 个性化网站建设费用网站建设seo虾哥网络
  • 全国做网站的优惠券小程序源码
  • 深圳网站制作的英文网站编辑怎么做
  • 中牟做网站做网站如何不被忽悠
  • 网站 设计公司 温州求网站备案照片
  • 织梦响应式网站编写网站的软件
  • 个人网站备案没有座机企业网站备案好不好
  • 广州做淘宝的化妆品网站关于建网站做淘宝联盟
  • 网站的功能公司做网站的目的
  • 建立自己的网站步骤wordpress后台怎么登入
  • 衡水企业网站制作报价学做网站好做吗
  • 佛山骏域网站建设乐陵市属于哪个市
  • 重庆做商城网站建设动漫设计与制作软件
  • 医院做网站的意义wordpress配置文件下载
  • 辽宁建设执业信息网站wordpress网站速度检测
  • 做一个网站难不难创建免费网页
  • 长宁网站设计网站建设方案书可自行撰写
  • 视频会议系统直播聊天网站开发wordpress版