首先,从右向左搜出一个满足 A[I-1]<A[I]的I
然后,从I开始向右搜一个大于A[I-1]且最小的数A[J]
之后,交换A[I-1]和A[J](很多其他的文章都说是A[I]与A[J]交换,那是错的,万万不可信(像某天真的小牛......))
从将[I,N]这个区间快拍即可。
将以上步骤重复K次,输出排列即可。
要说证明吗,大家应该可以想到范浩强的石子合并算法,和这题一样,抽象模型,模拟即可。
具体就不说了,很简单,自己找个数据算一下即可。
首先,从右向左搜出一个满足 A[I-1]<A[I]的I
然后,从I开始向右搜一个大于A[I-1]且最小的数A[J]
之后,交换A[I-1]和A[J](很多其他的文章都说是A[I]与A[J]交换,那是错的,万万不可信(像某天真的小牛......))
从将[I,N]这个区间快拍即可。
将以上步骤重复K次,输出排列即可。
要说证明吗,大家应该可以想到范浩强的石子合并算法,和这题一样,抽象模型,模拟即可。
具体就不说了,很简单,自己找个数据算一下即可。