【发布时间】:2022-10-16 23:39:56
【问题描述】:
x=input()
x=list(x)
n=''.join(x[0:x.index(' ')])
m=''.join(x[x.index(' ')+1:])
for y in range (0,int(n)):
seats=input()
events=int(input())
for a in range (0,events):
changes=input()
if changes[0]=='i' and changes[1]=='n':
if int(changes[3:])>int(m):
print("-1")
这就是我的努力。
目标是接收两个输入(n,m),n 是座位行,m 是列数。然后我必须接受 n 多个输入,每个输入是该行中的一个座位是否被占用,例如,如果输入 2 3 为 n m 然后,用户接下来将再输入 2 次,每个输入有 3 个整数 0 或1(1 为座位被占用,0 为空座位)。所以 101 111 意味着第一排中间的座位是空的,但其余的座位都被占用了。然后在用户输入座位的占用率后,我将再输入一个 int 输入来确定座位上发生的事件数量,然后我将再输入 x 个输入,其中 x 是事件的数量。
有两种类型的事件:“in”和“out”。如果用户输入“in z”,则表示已经有 z 个学生进入房间,他们正在寻找同排的 z 个座位来坐,如果他们找不到该数量的连续座位,那么他们离开房间。这意味着假设班级最初是 1110 0101,然后用户输入“in 2”然后进入房间的 2 个学生将离开,因为同一排没有任何连续的 2 个空座位。发生这种情况时,我们应该打印'-1',表明他们已经离开,因为他们没有找到座位。但是,假设是 1001 1111 并且用户输入了 'in 2',那么学生将占据前排的两个座位,它会变成 1111 1111,因此我们必须通过打印'1 2 来表明他们已经占据了这些座位'表示学生从第1排座位2开始连续坐了2个座位。另外,正在选择座位的学生正在尝试尽可能减少行和列,例如1010 1010和用户输入'in 1' 然后座位变为 1110 1010,因为学生选择了可能的最低行,并且在该行中,选择了可能的最低连续列。
对于另一种类型的事件:“out”,用户将输入“out x y”,其中 x 是行,y 是座位。 out 表示学生已经离开座位(注意:当输入“out”时,可以保证学生就座)。因此,如果座位是 1110 0111 并且用户输入“out 2 3”,那么座位将变为 1110 0101。
考虑这个样本输出和输入: 样本输入 1:// 3 4 // 0110// 0001 // 1010 // 6 // 在 3// 出 2 2// 在 2// 在 1// 出 2 3// 在 2// 样本输出 1:// 2 1// -1// 1 1// 2 2 // 1110 // 1111 // 1010 // 注意输出的每一行(//表示下一行)对应于'in'动作,例如'in 3'动作对应于2 1个席位,'in 2'动作是'-1',因为当时没有两个连续的座位是免费的。然后在事件完成后打印座位的最终状态。
我对如何在没有任何导入语句(它的准则之一)的情况下完成这项任务感到非常困惑。非常感谢任何帮助。
【问题讨论】:
标签: python