找到给定输出的最大值

时间:2016-03-20 12:31:39

标签: c++

我写了一个代码,找到通过两个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;
}

1 个答案:

答案 0 :(得分:1)

在你的程序中,你实际上没有选择最大的回文,你只需将它们全部丢弃。这是对代码工作的最小修正:

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;
}