思路:
这题其实很简单,最好的情况就是遍历所有的素数,不然,就是所有的奇数,这样得到的素数的个数最多。
分别统计1的个数,2的个数。
如果2的个数不为0,想取素数2,判断1的个数是否为0,取素数3,然后依次取得素数5,7,……。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(void)
{
int t1=0,t2=0,n,x,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&x);
if(x==1) t1++;
else t2++;
}
if(t2==0){
for(i=0;i<t1;i++){
if(i) printf(" ");
printf("1");
}
printf("\n");
return 0;
}
printf("2");t2--;
if(t1){
printf(" 1");t1--;
}
for(i=0;i<t2;i++){
printf(" 2");
}
for(i=0;i<t1;i++){
printf(" 1");
}
printf("\n");
return 0;
}