我正在编写一个代码来查找下一个最小的回文(整数)。我(必须)使用数组来处理如下的数字:
personDTOToPerson()
输出结果是无限循环。 对于例如对于输入45,输出必须为55,但结果为0000000 .. 请告诉我我错在哪里。
答案 0 :(得分:0)
识别回文并不难:
int is_palindrome(int a[], int max) {
for (int i = 0; i < max/2; i++) {
if (a[i] != a[max-i-1]) {
return 0;
}
}
return 1;
}
增加值并不困难:
void next_value(int a[], int max) {
int i = max - 1;
a[i]++;
while (i > 0 && a[i] > 9) {
a[i] = 0;
a[i-1]++;
i--;
}
}
很容易显示值:
void show(int a[], int max) {
for (int i = 0; i < max; i++) {
printf("%d", a[i]);
}
printf("\n");
}
有了这种支持,找到最小的以下回文是微不足道的:
void check_pal(int a[], int max) {
while (!is_palindrome(a, max)) {
next_value(a, max);
}
show(a, max);
}
顺便说一下,我会调用函数find_pal
而不是check_pal
。