问,求解,玄关
  • 板块学术版
  • 楼主chenzhuole1
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/1/23 14:31
  • 上次更新2025/1/23 16:45:41
查看原帖
问,求解,玄关
1465303
chenzhuole1楼主2025/1/23 14:31

站外题求解。

第 2 题 奶牛排队

描述

农夫fj有N (1 <= N <= 100)条编号为1..N的奶牛按照数组A(i)站成一排,但是为了拍照需要要把这些奶牛按照所谓的循环圆进行调整为数组B(i)排队。

例如,奶牛们初始是按照A = 5 1 4 2 3排队,为了拍照最后要调整为B = 2 5 3 1 4,调整的方法是,具体循环圆如下:在初始A数组奶牛5是排在第一位的,在B数组是排在第2,那么奶牛5就调到A数组的第2个位置取代奶牛1,奶牛1在B数组时排在第4个位置,那么奶牛1就调到A数组第4个位置取代奶牛2,奶牛2在B数组排在第1个位置,那么奶牛2就调到A数组第1个位置,因为第1个位置是奶牛5的起始位置,那么这个循环圆调整结束,这个循环圆由5、1、2组成而且他们都最终到达了最终位置。

剩下由奶牛4开始,因为奶牛4在B数组排在第5个位置,那么奶牛4在A数组调到第5个取代奶牛3,奶牛3在B数组排在第3个位置,那么奶牛3在A数组调到第3个位置,这个位置刚好是奶牛4的起始位置,这样奶牛4、3也是一个循环圆。

通过这两个循环圆,奶牛从初始的A数组调整到最终的B数组位置。 输入

第一行:一个整数N

第2..N+1行:行i+1代表A[i]

第2+N..1+2N行:代表B[i]

输出

两个整数分开的整数,第一个代表有多少个循环圆,第二个代表最长循环圆的长度。如果一个循环圆都不需要做,第二个数输出-1

和同学们调了好久都不行,求大佬解决,必关注,谢谢。

2025/1/23 14:31
加载中...