排队买汽水

排队买汽水链接

描述
N个小朋友准备去买汽水 由于每个人的耐心值不一样,设为ai 代表第i个人只能忍受在他前面有ai个人 如果他去的时候,发现前面超过了ai个人 他就不买了。 小卖部的老板想要提前准备一定量的汽水,但是他不想浪费。排队的人的数量可能取决于她们到达的顺序。 帮助老板求出最少可能的排队的人数量

输入
第一行包含N,第二行包含N个用空格分隔的整数a1,a2…an 1≤N≤100000 0<=ai<=1e9

输出
输出在所有可能的人到达顺序之下,最小可能的人的数量

样例
输入
5
7 1 400 2 2
输出
3
提示
在这个情况下可能最后仅有三个人在队伍中(这也是最小可能值)。即耐心值为7的人和400先到并等在队伍中。然后耐心值为1的人到达并且会离开,这是由于已经有2个人在队伍中了。然后耐心值为2的两个人到达,一个人留下排队,一个人离开。

求最小值,将序排列,再做判断即可

完整代码如下

#include <bits/stdc++.h>
using namespace std;
int n,a[100010],ans;
bool cmp(int a,int b){return a>b;}
int main(){
	cin>>n;
	for(int i=1 ; i<=n ; i++)cin>>a[i];
	sort(a+1,a+n+1,cmp);
	for(int i=1 ; i<=n ; i++)if(a[i]>=i-1)ans++;
	cout<<ans;
	return 0;
}
### 关于 C 语言 PTA 题目中的汽水问题递归解法 #### 解题思路分析 汽水问题的核心在于通过一定数量的空瓶换取新的汽水,并计算最终能够喝到的总汽水量。对于该问题,可以采用递归来模拟每次兑换的过程。 递归函数的设计应考虑以下几个方面: 1. **终止条件**:当当前拥有的空瓶数不足以兑换新汽水时停止递归。 2. **状态转移**:每一轮递归中,根据当前空瓶的数量计算能换得的新汽水数目以及剩余无法兑换的空瓶数。 3. **累加结果**:将每一层递归所获得的新汽水数量加入总计数中。 以下是基于上述逻辑的具体实现: ```c #include <stdio.h> // 定义递归函数用于计算总共可喝多少瓶汽水 int drinkWater(int emptyBottles, int totalDrinks) { if (emptyBottles < 2) { // 当前空瓶不足两个,则不能再换汽水 return totalDrinks; } int newDrinks = emptyBottles / 2; // 计算本次能换得的新汽水数量 int remainingEmpty = emptyBottles % 2; // 剩余未被利用的空瓶 // 更新总的已喝酒量并加上这次换来的汽水数量 totalDrinks += newDrinks; // 新增的空瓶等于刚喝掉的汽水瓶再加上之前剩下的零头 int updatedEmptyBottles = newDrinks + remainingEmpty; // 继续处理下一次可能的交换过程 return drinkWater(updatedEmptyBottles, totalDrinks); } int main() { int initialBottles = 0; // 初始购汽水瓶数 printf("请输入初始购汽水瓶数:"); scanf("%d", &initialBottles); // 调用递归函数开始计算 int result = drinkWater(initialBottles, 0); printf("总共可以喝到%d瓶汽水。\n", result); return 0; } ``` 此代码片段实现了从给定初始汽水瓶数出发,通过不断以两空瓶换一瓶的方式累计所能饮用的最大汽水总量[^1]。 #### 注意事项 如果允许借一瓶来完成最后一步兑换操作(即只剩下一个空瓶时),则需额外判断是否满足特定规则下的特殊情况处理机制。这通常需要询问具体题目设定或者面试官确认实际需求[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值