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

PTA L1-049 天梯赛座位分配(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 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

代码实现: 

#include<stdio.h>
int main()
{int n = 0;scanf("%d", &n);int num[101] = { 0 };int i = 0;int max = 0;int id = 0;int pos[101][11][11] = { 0 };int pre = 0;//输入各高校队伍数并求出最大的队伍数for (i = 1; i <= n; i++){scanf("%d", &num[i]);max = num[i] > max ? num[i] : max;}//编号int j = 0;for (j = 1; j <= max; j++){int k = 0;for (k = 1; k <= 10; k++){for (i = 1; i <= n; i++){if (j <= num[i]){//同一个学校隔位坐if (pre == i){id += 2;}else{//不同学校正常坐id += 1;}pre = i;pos[i][j][k] = id;}}}}//打印编号信息for (i = 1; i <= n; i++){printf("#%d\n", i);for (j = 1; j <= num[i]; j++){int k = 0;for (k = 1; k <= 10; k++){if (k != 10){printf("%d ", pos[i][j][k]);}else{printf("%d\n", pos[i][j][k]);}}}}return 0;
}

大致思路: 

1. 使用三维数组记录:每一个学校编号,每一个学校分配到的编号

注:每一个学校分配到的编号可以看成一个二维数组,行是该学校队伍的支数,列是一队的人数10

2. 分配编号:  以输入3
                                3 4 2  为例
 

    a. 分成最大队伍数轮

        分成四轮:第一轮给所有学校的第一支队伍分配编号

                          第二轮给所有学校的第二支队伍分配编号(若是有2支队伍)

                          第三轮给所有学校的第三支队伍分配编号(若是有3支队伍)

                          第四轮给所有学校的第四支队伍分配编号(若是有4支队伍)

     b. 每一轮:给所有学校的某一支队伍的10个位置编号

                        现有3个学校,学校编号为1,2,3

                         学校1:3支队伍,编号的二维数组,行为3,列为10

                         学校2:4支队伍,编号的二维数组,行为4,列为10

                         学校3:2支队伍,编号的二维数组,行为2,列为10

     c. 若是当前进行分配编号的学校与上一个分配编号的学校不同,则正常编号

          若是相同,则隔位编号

代码解读:

part 1:

   //输入各高校队伍数并求出最大的队伍数for (i = 1; i <= n; i++){scanf("%d", &num[i]);max = num[i] > max ? num[i] : max;}

所有学校的最大队伍数存储到max中 

part 2:

  //编号int j = 0;for (j = 1; j <= max; j++){int k = 0;for (k = 1; k <= 10; k++){for (i = 1; i <= n; i++){if (j <= num[i]){//同一个学校隔位坐if (pre == i){id += 2;}else{//不同学校正常坐id += 1;}pre = i;pos[i][j][k] = id;}}}}

1 编号的进行可以看成一个二维数组:行是最大队伍数(保证所有学校都能分配到编号),列是10

2 第一个for循环进行max次,每一次都给所有学校的某一支队伍(10个位置)编号  

编号之前需要判断当前的轮(代表所有学校要进行编号的第x支队伍)是否小于等于当前分配编号的学校的队伍数

若是满足条件,则可以编号

若是大于,则不进行编号,因为当前要分配编号的学校没有这支队伍的位置

3 若是当前进行分配编号的学校与上一个分配编号的学校不同,则正常编号

          若是相同,则隔位编号

  以如下案列为例:

输入样例:

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

总共进行4次循环,因为最大队伍数是4

第一次循环:给学校1,学校2,学校3的第一支队伍的10个位置分配编号

第二次循环:给学校1,学校2,学校3的第二支队伍的10个位置分配编号

第三次循环:给学校1,学校2,学校3的第三支队伍的10个位置分配编号

第四次循环:给学校1,学校2,学校3的第四支队伍的10个位置分配编号

但是:学校1能分配编号的共3支队伍,学校2能分配编号的共4支队伍,学校3能分配编号的共2支队伍,即学校1和2能够进行3轮,给自己的1,2,3的队伍编号,只有学校4能够进行第4轮给自己的第四支队伍编号 ,学校3只能进行两轮给自己的1,2的队伍编号

故而我们在编号之前需要进行判断:

if (j <= num[i])

j可以想象成二维数组的行,可以代表第几支队伍 

相关文章:

PTA L1-049 天梯赛座位分配(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 天梯赛每年有大量参赛队员&#xff0c;要保证同一所学校的所有队员都不能相邻&#xff0c;分配座位就成为一件比较麻烦的事情。为此我们制定如下策…...

Linux部分参数作用讲解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

Java kafka

JAVA面试题--Kafka&#xff08;最新最全&#xff09; 目录概述需求&#xff1a;设计思路实现思路分析1.URL管理2.网页下载器3.爬虫调度器4.网页解析器5.数据处理器拓展实现性能参数测试&#xff1a;参考资料和推荐阅读)Survive by day and develop by night. talk for import b…...

DBA之路---Stream数据共享同步机制与配置方法

oracle的Stream解析–数据共享 在g版本常用&#xff0c;如果是c版本项目一般都会选择goldengate&#xff0c;比stream靠谱多了 Oracle中的stream是消息队列一种应用形式&#xff0c;原理如下&#xff1a; 收集oracle中的事件&#xff0c;将事件保存在队列里&#xff0c;然后将…...

CF1790E Vlad and a Pair of Numbers 题解

CF1790E Vlad and a Pair of Numbers 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1思路代码实现题目 链接 https://www.luogu.com.cn/problem/CF1790E 字面描述 题面翻译 共有 ttt 组数据。 每组数据你会得到一个正整数 xxx&…...

漏洞预警|Apache Kafka Connect JNDI注入漏洞

棱镜七彩安全预警 近日网上有关于开源项目Apache Kafka Connect JNDI注入漏洞&#xff0c;棱镜七彩威胁情报团队第一时间探测到&#xff0c;经分析研判&#xff0c;向全社会发起开源漏洞预警公告&#xff0c;提醒相关安全团队及时响应。 项目介绍 Karaf是Apache旗下的一个开…...

企业小程序开发步骤【教你创建小程序】

随着移动互联网的兴起&#xff0c;微信已经成为了很多企业和商家必备的平台&#xff0c;而其中&#xff0c;微信小程序是一个非常重要的工具。本文将为大家介绍小程序开发步骤&#xff0c;教你创建小程序。 步骤一、注册小程序账号 先准备一个小程序账号&#xff0c;在微信公…...

刚性电路板的特点及与柔性电路板的区别

打开市场上的任何一个电子产品&#xff0c;会发现里面都有一块或多块电路板。电路板是电子产品运行的核心&#xff0c;之前沐渥小编已经给大家介绍了柔性电路板&#xff0c;下面给大家介绍刚性电路板的基础知识。 刚性电路板俗称硬板&#xff0c;是由不容易变形的刚性基材制成的…...

扫码过磅+车牌识别,内蒙古蒙维过磅实现信息化管理

扫码过磅、车牌识别、对接SAP ERP系统设计思路&#xff1a; 无人值守系统升级改造包括车牌自动识别系统、信息化&#xff08;扫码等方式&#xff09;管理系统、智能自动控制系统等实现信息无纸化传递。远程监管地点设于公司东磅房&#xff0c;可以实现远程监测监控画面、称重过…...

蒙特卡洛计算圆周率

使用MC计算圆周率的小例子&#xff0c;使用python的numpy&#xff0c;matplotlib库import numpy as npimport matplotlib.pyplot as pltdef mc_calculate_pi(t):np.random.seed(t)rand_num np.random.rand(t)rand_num2 np.random.rand(t)l1 rand_num-0.5l2 rand_num2-0.5l0…...

生物信息场景下的用户需求

背景分析概念定义基因测序是一种新型基因检测技术&#xff0c;是基因检测的方法之一&#xff0c;其又叫基因谱测序&#xff0c;是国际上公认的一种基因检测标准。基因测序技术能锁定病变基因&#xff0c;提前预防和治疗。过长的测序周期以及上万美元的仪器成本&#xff0c;成了…...

linux su(switch user)和sudo(superuser do)的区别?(sudo su与su的区别)

文章目录linux su&#xff08;switch user&#xff09;和sudo&#xff08;superuser do&#xff09;的区别&#xff1f;sudo su与su的区别linux su&#xff08;switch user&#xff09;和sudo&#xff08;superuser do&#xff09;的区别&#xff1f; 在Unix或Linux操作系统中…...

PostgreSQL的学习心得和知识总结(一百二十三)|深入理解PostgreSQL数据库开源扩展pg_dirtyread的使用场景和实现原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…...

ubuntu清理挖矿病毒

0 序言 我之前搭建的hadoop用于测试&#xff0c;直接使用了8088和9870端口&#xff0c;没有放入docker&#xff0c;从而没有端口映射。于是&#xff0c;就被不法之徒盯上了&#xff0c;hadoop被提交了很多job&#xff0c;使得系统被感染了挖矿病毒&#xff0c;在前几天阿里云站…...

【代码随想录训练营】【Day16】第六章|二叉树|104.二叉树的最大深度|559.n叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数

二叉树的最大深度 题目详细&#xff1a;LeetCode.104 递归法很容易理解&#xff1a; 定义一个全局变量max&#xff0c; 记录二叉树的最大深度在递归函数中增加一个深度参数&#xff0c;表示当前的节点的深度然后对二叉树进行深度优先遍历当遍历到叶子节点时&#xff0c;比较…...

transformer总结

1.注意力机制 意义&#xff1a;人类的注意力机制极大提高了信息处理的效率和准确性。 公式&#xff1a; 1)自注意力机制 b都是在考虑了所有a的情况下生成的。 以产生b1向量为例&#xff1a; 1.在a这个序列中&#xff0c;找到与a1相关的其他向量 2.每个向量与a1关联的程度&a…...

dart flutter入门教程,开发手册 分享

我最近在学校dart flutter.这是我收集的一些手册和教程. 不需要关注公众号,不需要加好友. 我发现flutter(dart)的中文资料比较奇缺.入门的教程非常多.但是api手册几乎没有(全是英文的). 收集原则 1.中文(我英文不好) 2.不要pdf的,网上有一些pdf的 从入门到进阶的,但是太长…...

教育舆情监测关键词有哪些,TOOM教育舆情监测系统流程?

教育舆情监测是指对教育领域的舆情进行收集、分析和处理的过程。舆情是指公众在各种渠道上对教育政策、教育机构、教育事件等方面的言论、态度和情绪。通过对教育舆情的监测和分析&#xff0c;可以了解公众对教育行业的看法和反应&#xff0c;提高对教育行业的管控能力&#xf…...

MySQL高级(一)

MySQL-day01 1 MySQL简介 1.1 MySQL简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB&#xff08;创始人Michael Widenius&#xff09;公司开发&#xff0c;2008被Sun收购&#xff08;10亿美金&#xff09;&#xff0c;2009年Sun被Oracle收购。MariaDBMaria…...

如何将Python项目部署到新电脑上运行?

如何将Python项目部署到新电脑上运行&#xff1f; 在工作中&#xff0c;可能需要在新服务器上部署项目代码&#xff0c;例如新增服务器、把测试环境的代码部署到生产环境等。 在生活中&#xff0c;也会遇到换新电脑&#xff0c;需要将自己在旧电脑上写的&#xff08;项目&…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...