Project Eulerの問題 9 を解決しています。私のソリューションでは、「goto」ステートメントを使用して 2 つの for ループから抜け出します。問題は次のとおりです。
ピタゴラスのトリプレットは、3 つの自然数 abc のセットです。
a^2 + b^2 = c^2
たとえば、3^2 + 4^2 = 9 + 16 = 25 = 52 です。
a + b + c = 1000 であるピタゴラスの 3 連符が 1 つだけ存在します。積 abc を見つけます。
私の解決策はC ++にあります:
int a,b,c;
const int sum = 1000;
int result = -1;
for (a = 1; a<sum; a++){
for (b = 1; b < sum; b++){
c = sum-a-b;
if (a*a+b*b == c*c){
result = a*b*c;
goto found;
}
}
}
found:
std::cout << "a:" << a << std::endl;
std::cout << "b:" << b << std::endl;
std::cout << "c:" << c << std::endl;
std::cout <<"Result:" << result << std::endl;
「goto」ステートメントは C++ プログラマーの間ではあまり一般的ではないため、これが「goto」の合理的な使用法と見なされるかどうかを知りたいです。または、「goto」を必要としない問題のより良い解決策がある場合。これは、単に「goto」を回避するソリューションではなく、アルゴリズムを改善する方法で「goto」を回避するソリューションを意味します。