简介
- 基于逐个尝试答案的一种问题求解策略
例题——完美立方
给一个n,找到n以内的所有a3=b3+c3+d3
#include<iostream>
#include<algorithm>
using namespace std;
using ll=long long;
ll V3(int n){
return n*n*n;
}
int main(){
int n;
cin>>n;
ll num[n+1];
for(int i=1;i<=n;i++){
num[i]=V3(i);//比较下层反复计算,消耗一些空间换时间
}
int a,b,c,d;
for(a=3;a<=n;a++){
for(b=2;b<=a-1;b++){
for(c=b;c<=a-1;c++){
for(d=c;d<=a-1;d++){
if(num[a]==num[b]+num[c]+num[d]){
cout<<"Cube = "<<a<<",Triple = ("<<b<<","<<c<<','<<d<<")";
cout<<endl;
}
//注意这里四个数的取值范围,某一些范围可人为控制认为不可能,进而为程序提高效率
}
}
}
}
}
例题——生理周期
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int p,e,i,d;
while(cin>>p

本文通过一系列编程实例展示了如何利用枚举策略解决复杂问题,包括完美立方问题、生理周期计算、称硬币找假币以及熄灯问题。这些例子涉及到递归、跳跃枚举和二进制操作等技术,旨在提高算法效率和简化问题处理。
最低0.47元/天 解锁文章
2687

被折叠的 条评论
为什么被折叠?



