问题 L: 最长回文数的位数
题目描述所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
现在给出n个一位整数数字,请问:从这n个数字中任选一些数字,能拼成的最长回文数 是多少位?
输入
输入一个整数n(1<=n<=100,表示随后将输入的数字个数)。
然后输入n个一位非负整数数字,即其取值范围为。
输出
输出能拼成的最长回文数的位数。
样例输入
15
1 2 2 3 5 7 0 1 2 3 4 5 2 2 3
样例输出
11
求解{:10_277:} 刚刚想出来了{:10_277:}
#include <stdio.h>
int main(void)
{
int a, b= {0}, i, n, s = 0;
scanf("%d", & n);
for(i = 0 ; i < n ; i ++)
{
scanf("%d", & a);
}
for(i = 0 ; i < n ; i++)
{
b]++;
}
for(i = 0 ; i < 10 ; i++)
{
s += (b % 2!=0) ? b - 1 : b ;
}
if(s!=n)
{
s++;
}
printf("%d\n", s);
}
用你的代码试试:
10
1 2 2 1 1 2 2 1 1 2
正解:8(你的代码输出:9) 本帖最后由 jhq999 于 2021-12-16 20:48 编辑
傻眼貓咪 发表于 2021-12-16 20:37
用你的代码试试:
10
1 2 2 1 1 2 2 1 1 2
112222211
221111122
…… jhq999 发表于 2021-12-16 20:47
112222211
221111122
……
抱歉,看错题目{:5_99:} #include <stdio.h>
int main(){
int N, n, nums = {0}, res = 0;
scanf("%d", &N);
for(int i = 0; i < N; i++){
scanf("%d", &n);
nums++;
}
for(int i = 0; i < 10; i++) res += (nums/2)*2;
res = res < n ? res+1 : res;
printf("%d\n", res);
return 0;
}
页:
[1]