简单贪心,排个序,然后注意前导0就好了
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
struct node
{
int num;
int flag;
}a[105];
bool cmp(node a,node b)
{
return a.num>b.num;
}
int main(){
int n;
while(scanf("%d",&n)==1){
memset(a,0,sizeof(a));
int pos=0,minodd=100,minodd_num=0;
for(int i=0;i<n;i++){
scanf("%d",&a[i].num);
if(a[i].num%2==0)
pos++;
if(a[i].num<minodd&&a[i].num%2!=0)
minodd=a[i].num;
}
for(int i=0;i<n;i++){
if(a[i].num==minodd)
minodd_num++;
}
if(pos==n){
printf("-1\n");
continue;
}
sort(a,a+n,cmp);
if(minodd_num==1){
for(int i=0;i<n;i++){
if(a[i].num!=minodd)
printf("%d",a[i].num);
}
printf("%d\n",minodd);
continue;
}
else{
for(int i=0;i<n;i++){
if(a[i].num!=minodd)
printf("%d",a[i].num);
else if(a[i].num==minodd){
if(minodd_num!=1){
printf("%d",a[i].num);
minodd_num--;
}
else
continue;
}
}
printf("%d\n",minodd);
continue;
}
}
return 0;
}