蚂蚁追风筝 发表于 2021-12-16 19:45:34

问题 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:}

蚂蚁追风筝 发表于 2021-12-16 19:57:55

刚刚想出来了{: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);
}

傻眼貓咪 发表于 2021-12-16 20:37:33

用你的代码试试:
10
1 2 2 1 1 2 2 1 1 2

正解:8(你的代码输出:9)

jhq999 发表于 2021-12-16 20:47:32

本帖最后由 jhq999 于 2021-12-16 20:48 编辑

傻眼貓咪 发表于 2021-12-16 20:37
用你的代码试试:
10
1 2 2 1 1 2 2 1 1 2


112222211
221111122
……

傻眼貓咪 发表于 2021-12-16 21:10:27

jhq999 发表于 2021-12-16 20:47
112222211
221111122
……

抱歉,看错题目{:5_99:}

傻眼貓咪 发表于 2021-12-16 21:33:47

#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]
查看完整版本: 问题 L: 最长回文数的位数