(每日一练)题目名称:小球游戏

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-07-18 20:49:24

某台有10个小球的游戏机,其设定的规则如下:
每一轮游戏在开始之前会把编号为0到9的小球依次放入从左到右编号也为0到9的10个位置;游戏开始后会快速对调任意两个球的位置若干次,并在结束时要求观众写出从左到右的小球编号顺序,写对就得奖。
由于速度很快,所以直接靠观看写对很难。但有个程序员发现这台游戏机其实有一个固定的长度为n的操作序列数据库,每一轮游戏都是随机取一个起始操作序列编号和一个结束操作序列编号(操作序列编号从1到n)并从起始到结束依次执行每个操作序列编号对应的操作,而每个操作序列编号对应的操作就是对该次操作指定的两个编号的位置上的小球进行对调。
现在给出操作序列数据库和每一轮游戏的起始操作序列编号和结束操作序列编号,求每轮游戏结束时从左到右的小球编号顺序。

第一行两个正整数n和m,表示操作序列的长度和游戏轮数。 接下来n行,每行两个非负整数a和b,表示每个操作序列指定对调的两个小球所在位置的编号 接下来m行每行两个正整数c和d表示该轮游戏中的起始操作序列编号和结束操作序列编号(c和d都是从1到n之间的正整数且c<d)

m行,代表每轮游戏结束时的小球编号顺序

示例1
输入
5 3
0 1
1 2
2 3
0 1
9 0
3 3
1 5
3 4
输出
0 1 3 2 4 5 6 7 8 9
9 1 3 0 4 5 6 7 8 2
1 0 3 2 4 5 6 7 8 9

每日一练社区新增题目,也许会出现在周赛,暂不提供代码。

小提示:注意题目描述起始操作序列编号和结束操作序列编号

...全文
310 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2023-07-20
  • 打赏
  • 举报
回复

这个题容易让人想复杂了,简单来说,有 n 个交换方式,存放到变量 switch 里,然后,有指定方位的操作,比如 3,3,只操作一次,也就是第三个,索引为2的交换操作,1,5,那么就执行索引为0,1,2,3,4,也就是5个操作,搞明白逻辑就很简单了

n,m = map(int,input().split())
switch = [list(map(int,input().split())) for i in range(n)]
for _ in range(m):
    balls = list(range(10))
    a,b = map(int,input().split())
    for i in range(a - 1,b):
        x,y = switch[i]
        balls[x],balls[y] = balls[y],balls[x]
    print(*balls)

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧