алгоритм — самый большой палиндром 3 цифры переполнение стека

Я не могу понять, почему этот код не работает. Кажется, он даже не проходит через мои циклы и вложенные циклы. Я очень новичок в программировании. Я пытался ответить на вопросы Эйлера для практики. Извините, если мой код ужасен.

 #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

Решение

Я думаю, что вам нужно вернуть истину в isPalindrome после сравнения полной строки. т.е. 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;
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]