Слово о производительности.У вас есть возможность дублировать многие продукты, потому что вы используете довольно простой подход с вложенными циклами.Например, вы начинаете с 999 * 999, а затем с 999 * 998 и т. Д. Когда внутренний цикл завершится, вы уменьшите внешний цикл и начнете снова с 998 * 999, что аналогично 999 * 998.
Действительно, вы хотите запустить внутренний цикл с тем же значением, что и текущее значение внешнего цикла.Это исключит ваши дублирующие операции.Примерно так ...
for (i = 999; i > 99; i--)
{
for (g = i; g > 99; g--)
{
...
Однако, как указал Эмилио, ваше предположение, что первым найденным вами палиндромом будет ответ, неверно.Очевидно, вам нужно сначала вычислить самые большие числа.Поэтому вы должны попробовать их в этом порядке;999 * 999, 999 * 998, 998 * 998, 999 * 997, 998 * 997 и т. Д. *
Не проверял, но я думаю, вы хотите что-то вроде этого (псевдокод):
x = 999;
n = 0;
while (++n <= x)
{
j = x;
k = j - n;
while (j >= k)
{
y = j-- * k;
if (check(y))
stop looking
}
}