思路:
查看有几次落差值
(就是不合要求的值)正常的都是1次,如果不正常就是NO
#include<bits/stdc++.h>
using namespace std;
int q,n,a[201],i,j;
bool ssz(int n1)
{
int dc1=0,l;
for(l=1;l<n1;l++)
{
if(a[l]!=a[l+1]-1 && a[l+1]!=0)
{
dc1+=1;
}
}
if(dc1<=1)
return true;
else
return false;
}
bool nsz(int n2)
{
int dc2=0,k;
for(k=1;k<n2;k++)
{
if(a[k]!=a[k+1]-1)
{
dc2+=1;
}
}
if(dc2<=1)
return true;
else
return false;
}
int main()
{
cin>>q;
for(i=1;i<=q;i++)
{
cin>>n;
for(j=1;j<=n;j++)
cin>>a[j];
if(ssz(n)||nsz(n))
cout<<"YES\n";
else
cout<<"NO\n";
for(j=1;j<=n;j++)
a[j]=0;
}
}