求大佬解惑
查看原帖
求大佬解惑
951409
pyerssf楼主2024/4/6 20:09

n = int(input())

nums = list(map(int,input().split()))

visited = [False]n ans = 0 for i in range(n): if visited[i]: continue if i+1 == nums[i]: visited[i] = True continue if i == nums[nums[i]-1]-1: visited[i] = True visited[nums[i]-1] = True ans += 1 print(ans + (len(nums)-ans2-1)) 例子:3 1 2 5 4 正确:1 2 3 4 5 发现 5 - 4 , 4 - 5 所以只需要交换一次 我们把满足这样条件的一对数个数找到放到ans里 最后剩余的不满足这样条件的就是贪心每次放选一个放到他应该在位置,ans += 剩余的数字 的个数 - 1 发现一个答案也不对...

2024/4/6 20:09
加载中...