给你一个序列,问你能不能只交换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");
}
本文介绍了一种简单的方法来判断一个整数序列通过仅交换两个元素能否变为有序。算法仅需遍历一次序列,并计数逆序对数量是否小于等于1。
给你一个序列,问你能不能只交换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");
}
471
444

被折叠的 条评论
为什么被折叠?