找到被替换的位置,观察可发现,如果可以翻转,那么翻转范围的大小也是呈从小到大或从大到小顺序的。
C++ 代码
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int l=0,r=0;
int n;
cin>>n;
int a[1001];
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
{
if(a[i]!=i&&l==0)
l=i;
if(a[i]!=i)
r=i;
}
int flag=1;
for(int i=l;i<=r-1;i++)
{
if(a[i]==a[i+1]-1||a[i]==a[i+1]+1);
else
flag=0;
}
if(flag)
printf("%d %d",l,r);
else
printf("0 0");
return 0;
}