思维好题,保证有解大大降低了代码难度。
显然最多有两个位置不同,不然根据鸽巢原理一定有一个序列不同位置超过一个。
然后大力分类讨论:
- 仅有一个位置不同。此时其余位置与排列相同,否则一定有一个序列不同位置超过一个。然后将没有用过的那个数丢到这个位置即可。
- 有两个位置不同。此时其余位置显然也与排列相同。构造方案就枚举第一个序列与排列相同的那个位置,也就两种情况。
思维好题,保证有解大大降低了代码难度。
显然最多有两个位置不同,不然根据鸽巢原理一定有一个序列不同位置超过一个。
然后大力分类讨论: