我试图让我的程序只选择最大的产品而不是所有的产品。 P.S 我知道有更有效的方法可以做到这一点(例如取出重复项)但我想这样做。
#include <iostream>
using namespace std;
bool isPal(int);
int main()
{
int pal;
// Finds largest product
for (int a = 100; a < 1000; a++)
{
for (int b = 100; b < 1000; b++)
{
pal = a * b;
if (isPal(pal))
{
cout << pal << "(" << a << "*" << b << ")" << endl;
}
}
}
system("pause");
return 0;
}
bool isPal(int num)
{
bool status = true;
int digit, rev = 0, ck_num; // Added new variable
ck_num = num; // Assigned it to variable num
// Tests for palindrome
while (num)
{
digit = num % 10;
num /= 10;
rev = rev * 10 + digit;
}
if (rev == ck_num) // Checked it against unchanged variable
status = true;
else
status = false;
return status;
}
最佳答案
您可以创建一个变量来存储其中最大的回文。并对照它检查每个回文。
例如:
int largest = 0;
if (pal > largest) {
largest = pal;
}
if 语句将进入“if (ispal(pal))”,您应该在程序顶部创建 largest。 在程序结束时,您可以显示最大以查看答案。
完整代码:
#include <iostream>
using namespace std;
bool isPal(int);
int main()
{
int largest;
int pal;
// Finds largest product
for (int a = 100; a < 1000; a++)
{
for (int b = 100; b < 1000; b++)
{
pal = a * b;
if (isPal(pal))
{
if (pal > largest) {
largest = pal;
}
}
}
}
cout << "Answer: " << largest << endl;
system("pause");
return 0;
}
关于c++ - Euler #4 找到由两个 3 位数的乘积组成的最大回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32898548/