将十元钱兑换成一元,五角,一角的硬币,共计40枚,计算有多少中兑换方法
#include<bits/stdc++.h>
using namespace std;
int cnt;
int main(){
for(int i=1;i<=40;i++){ //枚举x
for(int j=1;j<=80;j++){ //枚举y
for(int k=1;k<=400;k++){ //枚举z
int sum=i+0.5*j+0.1*k;
if(sum==10&&(i+j+k)==40){
cnt++;
cout<<i<<' '<<j<<' '<<k<<endl;
}
}
}
}
/*时间复杂度O(n)=40*80*400=1280000<10.0E+9(10的9次方)
可以1秒出答案。
*/
cout<<cnt;
return 0;
}
穷举
令1元=x枚
令0.5元=y枚
令0.1元=z枚
x+y+z=40
x+0.5y+0.1z=10
3个for循环,穷举就可以了
x的取值范围 0-40
y 0-80
z 0-400