柠檬水找零-详细求解,可以得到找钱过程

柠檬水找零

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。

注意,一开始你手头没有任何零钱。

给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
在这里插入图片描述
对这一题,我自己写出来之后,我觉得自己写的比较复杂看看答案也觉得自己方法也不错,很多人求解这个问题直接数学建模这样通过10 块 五块的个数就可以求解出答案,我的代码较为详细,可以模拟出找钱过程代码如下:

bool lemonadeChange(int* bills, int billsSize){
int i=0,j;
int b_l[billsSize],p=0;
int cm;
int r;
int nr;
for(i;i<billsSize;i++){if(bills[i]==5){b_l[p]=5;p++;}else{if(bills[i]==10){r=0;for(j=0;j<p;j++){if(b_l[j]==5){r=1;b_l[j]=b_l[p-1];p--;break;}}if(r==0)  return false;else{b_l[p]=10;p++;}}if(bills[i]==20){r=0;for(j=0;j<p;j++){if(b_l[j]==5){r=1;b_l[j]=b_l[p-1];p--;break;}}if(r==0)  return false;r=0;for(j=0;j<p;j++){if(b_l[j]==10){r=1;b_l[j]=b_l[p-1];p--;break;}//     printf("%d  %d",p,r);}if(r==1){b_l[p]=20;p++;}else{nr=0;//   printf("%d ",p);for(j=0;j<p;j++){if(b_l[j]==5){nr++;b_l[j]=b_l[p-1];p--;break;}}for(j=0;j<p;j++){if(b_l[j]==5){nr++;b_l[j]=b_l[p-1];p--;break;}}//   printf("%d ",p);if(nr==2){b_l[p]=20;p++;}else return false;}}}}
return true;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部