一、先交换
链接:https://ac.nowcoder.com/acm/contest/51137/A
来源:牛客网
1.题目描述
给定一个长度为 nnn 的数组 aaa,下标从 111 开始,可以进行以下操作:
选择两个下标 i,ji,ji,j 满足 1≤i<j≤n,ai>aj1\le i\lt j\le n,a_i>a_j1≤i<j≤n,ai>aj,交换 ai,aja_i,a_jai,aj。
问最少多少次操作后 a1a_1a1 为奇数。
若无论多少次操作和都无法使得 a1a_1a1 为奇数,则输出 -1。


2.思路
当首位是奇数的时候输出为0,无需操作
当首位是偶数的时候,如果后面又元素比它小,那么就输出1,否则就输出-1
要注意一下满足 1≤i<j≤n,ai>aj1\le i\lt j\le n,a_i>a_j1≤i<j≤n,ai>aj,交换
3.代码实现
#include<stdio.h>
int x[101];
int fun(int a,int n)
{
if(a%2!=0)return 0;
else
{
for(int i=2;i<=n;i++)
if(a>x[i]&&x[i]%2!=0)return 1;
return -1;
}
}
int main()
{
int sum,t,n,i;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&x[i]);
sum=fun(x[1],n);
printf("%d\n",sum);
}
return 0;
}