给你一个序列,问你能不能只交换2个元素使得它有序
解法:扫一遍即可,如果可以,那么逆序对<=1
#include<stdio.h>
int main(){
int n,a,b,num;
scanf("%d%d",&n,&a); b=a;
for(int i=2;i<=n;i++){ scanf("%d",&b); if(b<a) num++; b=a; }
if(num<=1) puts("YES"); else puts("NO");
}
给你一个序列,问你能不能只交换2个元素使得它有序
解法:扫一遍即可,如果可以,那么逆序对<=1
#include<stdio.h>
int main(){
int n,a,b,num;
scanf("%d%d",&n,&a); b=a;
for(int i=2;i<=n;i++){ scanf("%d",&b); if(b<a) num++; b=a; }
if(num<=1) puts("YES"); else puts("NO");
}