陕西省建设厅注册中心网站,品牌营销策略四种类型,打车网站开发,网站设计专业知识技能题目:
在柠檬水摊上#xff0c;每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品#xff0c;#xff08;按账单 bills 支付的顺序#xff09;一次购买一杯。 每位顾客只买一杯柠檬水#xff0c;然后向你付 5 美元、10 美元或 20 美元。 你必须给每个顾客正确找零每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品按账单 bills 支付的顺序一次购买一杯。 每位顾客只买一杯柠檬水然后向你付 5 美元、10 美元或 20 美元。 你必须给每个顾客正确找零也就是说净交易是每位顾客向你支付 5 美元。注意一开始你手头没有任何零钱。 如果你能给每位顾客正确找零返回 true 否则返回 false 。
示例 1 输入[5,5,5,10,20] 输出true 思路: 设置两个变量 five_count 和 ten_count 分别表示手里拥有的 5 美元和 10 美元的数量初始值都为 0。 遍历每个顾客支付的金额如果是 5 美元则不需要找零如果是 10 美元则需要找回 5 美元如果是 20 美元则需要找回 15 美元。 对于 10 美元的找零我们需要首先判断手里是否有足够的 5 美元来找零。如果有则将 five_count 减 1将 ten_count 加 1如果没有则无法找零返回 false。 对于 20 美元的找零我们需要优先使用一张 10 美元和一张 5 美元来找零因为这样可以让手里的 5 美元硬币更多以备后续使用。如果手里没有足够的 10 美元和 5 美元则可以使用三张 5 美元来找零。如果无法找零返回 false。 如果所有顾客的交易都能正确找零最终返回 true。 代码: #include iostream
using namespace std;
#include vector// 找零函数接受一个整数向量表示账单返回是否能找零的布尔值
bool lemonadeChange(vectorint bills) {int five_count 0; // 5 美元钞票数量int ten_count 0; // 10 美元钞票数量// 遍历账单for (int bill : bills) {if (bill 5) { // 如果是 5 美元five_count; // 5 美元数量加一}else if (bill 10) { // 如果是 10 美元if (five_count 1) { // 如果有 5 美元可以找零five_count--; // 找零 5 美元ten_count; // 得到 10 美元}else { // 无法找零return false;}}else if (bill 20) { // 如果是 20 美元if (ten_count 1 five_count 1) { // 如果有 10 美元和 5 美元可以找零ten_count--; // 找零 10 美元five_count--; // 找零 5 美元}else if (five_count 3) { // 如果没有 10 美元但有 3 张 5 美元可以找零five_count - 3; // 找零 3 张 5 美元}else { // 无法找零return false;}}}return true; // 能够成功找零
}int main() {vectorint bills { 5, 5, 5, 10, 20 };bool result lemonadeChange(bills);cout boolalpha result endl; // 输出truereturn 0;
}