关于#c语言#的问题,如何解决?

我想要达到的结果 最长回文数的位数
题目描述
所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
现在给出n个一位整数数字,请问:从这n个数字中任选一些数字,能拼成的最长回文数 是多少位?
输入
输入一个整数n(1<=n<=100,表示随后将输入的数字个数)。
然后输入n个一位非负整数数字,即其取值范围为[0, 9]。
输出
输出能拼成的最长回文数的位数。
样例输入 Copy
15
1 2 2 3 5 7 0 1 2 3 4 5 2 2 3
样例输出 Copy
11

#include <stdio.h>
int main(){
int a[10]={0};
int n,num,i;
scanf("%d",&n);
for( i = 0;i<n;i++)
{scanf("%d",&num);
a[num]++;
}
num=0;
for(i=0;i<10;i++)
{num+=a[i]/2*2;
}
if(num!=n)
num++;
printf("%d",num);
return 0;
}