我不明白爲什麼這段代碼不起作用。它似乎沒有通過我的循環和嵌套循環。我對編程非常陌生。我一直在努力回答歐拉的練習問題。對不起,如果我的代碼是可怕的。最大的迴文3位數字C++
#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];
}
我認爲你需要在isPalindrome比較完整的字符串後返回true。 ir return true應該在外面for循環 – 999k 2013-04-25 04:11:39
我明白了你的觀點。我把外部的if循環,但它仍然沒有改變結果。它總是打印零。 – Curtis2point0 2013-04-25 04:20:07
問題出在'isPalindrome'函數中。您正在錯誤地構造反轉的字符串。如果你創建一個專門用於反轉字符串的函數(我們稱之爲'reverseString'),那麼從概念上來說可能會更簡單。然後你可以用'string pal = reverseString(str);'替換'isPalindrome'中的循環。之後,您只需檢查它們是否相同並返回結果。 – 2013-04-25 04:21:10