#include<iostream>
#include<cstdio>
using namespace std;
typedef struct {
int val;
int row; /*箭头指向,0表示指向左,1指向右*/
}INTS;
int maxmove(INTS *a,int n) /*找出最大的移动整数K的下标maxi*/
{
int i,maxi=-1,max=0;
if(a[0].row && a[0].val>a[1].val && a[0].val>max) /*如果第1个数的箭头指向右且右边的数比它小*/
{ /*那么第1个数有可能就是最大移动整数,先暂时保存*/
maxi=0;
max=a[0].val;
}
for(i=1;i<n-1;i++) /*从第2个数到倒数第2个数,如果它的箭头指向右并且右边的数比它小 或者 它的箭头*/
{ /*指向左并且左边的数比它小,那么它也有可能是最大移动整数*/
if(a[i].row && a[i].val>a[i+1].val || !a[i].row && a[i].val>a[i-1].val)
{
if(a[i].val>max)
{
maxi=i;
max=a[i].val;
}
}
}
if(!a[n-1].row && a[n-1].val>a[n-2].val && a[n-1].val>max)
{
JohnsonTrotter排列算法
最新推荐文章于 2022-09-27 15:10:05 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)