程序设计与算法第一周课程 – 枚举
解题思路:
四重循环枚举a, b, c, d, 其中a在最外层,d在最里层,每一层都是从小到大枚举
注意枚举范围的适当缩减(由于已知范围b<=c<=d)还有默认的条件是a最大
a枚举范围是[2, N]
b枚举范围是[2, a-1]
c枚举范围是[b, a-1]
d枚举范围是[d, a-1]
AC
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int N;
cin >> N;
for(int a=2; a<=N; a++)
for(int b=2; b<a; b++)
for(int c=b; c<a; c++)
for(int d=c; d<a; d++)
if(a*a*a == b*b*b + c*c*c + d*d*d)
printf("Cube = %d, Triple = (%d,%d,%d)\n", a, b, c, d);
return 0;
}
枚举法可以通过找相应的条件来缩小枚举的范围,从而提高效率。