在给定输出中找到最大值

Finding the maximum in given outputs

本文关键字:最大值 输出      更新时间:2023-10-16

我写了一个代码来找到由两个 3 位数字相乘形成的最大回文。然而,我不仅得到了想要的答案,即最大的回文,我得到了所有可能的回文列表。如何对其进行编程以找到最大的。法典:

#include <iostream>
using namespace std;
int revfunc(int x) {
    int rev = 0, num, d;
    num = x;
    while(num != 0) {
        d = num % 10;
        rev = (rev * 10) + d;
        num = num / 10;
    }
    long int maxi = 0;
    if(x == rev && maxi < x) {
        maxi=x;
        cout<<maxi<<endl;
    }
}
int main() {
    long int ans;
    for(int i = 100; i <= 999; i++) {
        for(int j = 100; j <= 999; j++) {
            ans = i * j;
            revfunc(ans);
        }
    }
    cin.get();
    return 0;
}

在你的程序中,你实际上并没有选择最大的回文,你只是把它们全部转储掉。以下是对代码工作的最小更正:

bool revfunc(int x){
    int rev = 0, num, d;
    num = x;
    while (num != 0){
        d = num % 10;
        rev = (rev * 10) + d;
        num = num / 10;
    }
    long int maxi = 0;
    return x == rev&&maxi < x;
}
int main()
{
    int max_palindrome = 0;
    long int ans;
    for (int i = 100; i <= 999; i++){
        for (int j = 100; j <= 999; j++){
            ans = i*j;
            if (ans > max_palindrome && revfunc(ans))
            {
                max_palindrome = ans;
            }
        }
    }
    cout << max_palindrome;
    cin.get();
    return 0;
}