题目大意:
给你N位数,每位数是0~9之间。你把这N位数构成一个整数。
要求:
1、必须是奇数
2、整数的前面没有0
3、找到一个最大的整数
如果满足1、2、3条件,就输出这个数,不满足就输出-1.
整体思路:对给的序列进行从大到小排序,再从右边第一个数开始找奇数,也就是相当于找最小的奇数,如果找到这个奇数,把这个奇数之后的数字依次向左移一位,再把奇数放在最后一位。同时如果这个序列第一个数字不为0,就可以输出这个序列,否则就输出-1;
代码实现如下:
#include<cstdio>
#include<algorithm>
using namespace std;
int a[110];
int cmp(int a,int b){
return a>b;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int pos=-1;
int t;
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
for(int i=n-1;i>=0;i--){
if(a[i]%2==1){
pos=i;
t=a[i];
break;
}
}
if(pos>=0){
for(int i=pos;i<n;i++)
a[i]=a[i+1];
a[n-1]=t;
if(a[0]==0)
printf("-1\n");
else{
for(int i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
}
}
else printf("-1\n");
}
return 0;
}