问题标题: 酷町堂:1801 换小额钞票程序超时

0
0
已解决
武奕楷
武奕楷
新手天翼
新手天翼

小明妈妈是开超市的,每天都要卖很多东西,需要准备很多零钱,某一天超市零钱不够了,于是她去银行换钞票,想把n张100元的钞票兑换成10元、20元、50元小钞票形式。请问有多少种兑换的方式呢?

高手们指导一下,这题我做了很多次,最高分90分,总是显示Time Limit Exceeded(最后的程序如下 ,  for(b=0;b<=n*5;b++)总是提醒这代码显示超时 ),不知道怎样能优化程序

 

for(a=0;a<=n*2;a++){

    for(b=0;b<=n*5;b++){

    if(a*5+b*2<=n*10)

    cnt++;

    else break;

                                     }

                                    }


0
已采纳
汪宇航
汪宇航
新手启示者
新手启示者

#pragma GCC optimize(3)

using namespace std;

int main(){

int n,cnt=0;

cin>>n;

for(int i=0;i<=n*2;i++){

for(int j=0;j<=n*5;j++){

int k=n*100-i*50-j*20;

if(k>=0){

cnt++;

}

}

}

cout<<cnt;

 

0
0
汪恺恒
汪恺恒
中级启示者
中级启示者

加个头文件

#pragma GCC optimize(3)

或用完全背包求方案总数来优化

我要回答