牵风 发表于 2022-1-24 13:09:45

这个代码还有那种情况没考虑到

所谓回文数,就是说一个数字从左边读和从右边读的结果是一模一样的,比如12321。
现在给出n个一位整数数字,请问:从这n个数字中任选一些数字,能拼成的最长回文数 是多少位?
输入
输入一个整数n(1<=n<=100,表示随后将输入的数字个数)。
然后输入n个一位非负整数数字,即其取值范围为。
输出
输出能拼成的最长回文数的位数。
#include <stdio.h>

int main() {
        int a,b= {0};
        int n;
        scanf("%d",&n);
        for(int i=0; i<n; i++) {
                scanf("%d",&a);
                b]++;
        }
        int sum=0;
        for(int i=0; i<10; i++) {
                if(b!=1) {
                        if(b%2!=0) {
                                b=b-1;
                                sum+=b;
                        } else
                                sum+=b;
                }
        }
        printf("%d",(sum%2)?sum:sum+1);

}

大马强 发表于 2022-1-24 18:51:56

用了一轮,123321这个回文数是有问题的
最后输出了 7
页: [1]
查看完整版本: 这个代码还有那种情况没考虑到