我无法弄清楚为什么这段代码不起作用。它似乎甚至没有通过我的for循环和嵌套循环。我是编程的新手。我一直试图回答欧拉问题的练习。对不起,如果我的代码很糟糕。
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(int x) {
string str = to_string(x);
for(string::reverse_iterator rit=str.rbegin(); rit!=str.rend(); ++rit) {
string pal = to_string(*rit);
if(pal == str) {
return true;
}else {
return false;
}
}
}
int main() {
int max[] = {0, 0};
for(int i=999; i>99; i--) {
for( int j =999; j>99; j--) {
int pal = i*j;
if(isPalindrome(pal) == true) {
max[1] = pal;
if(max[1] > max[0]){
max[0] = pal;
}
}
}
}
cout << max[0];
}
答案 0 :(得分:0)
我认为你需要在比较完整的字符串后在isPalindrome
中返回true。即return true;
应该在for
循环
为了检查最大的3位数回文,你为什么要通过int pal = i*j;
,即第一次迭代999*999
。检查一下
bool isPalindrome(int x) {
string str = to_string(x);
string pal = str;
std::reverse(pal.begin(),pal.end());
if(pal == str) {
return true;
}else {
return false;
}
}