不用数组的解法(有思路明细)
2026-02-03 18:15:04
发布于:重庆
8阅读
0回复
0点赞
题解在最后,接下来是说明
1:理解问题
根据"题目描述"可以化简为:
满足条件的数值有几
条件:
- 1:数值大于 0 (即数值为正)
- 2:从大到小前 k 位的数值
2:转化条件为目标
据1.1得- 判断数值是否大于0
据1.2得-
(1)从大到小排序 但是根据题目得已经按分数从大到小排序
所以不用考虑
(2)判断是否是前 k 位的数值
注意:因为数值难免有相同,因题目中说明"不存在相同分数的人",所以才不考虑位置重合
3:规划思路
不用数组 即 获取到数值 需 直接处理
为了保证正确
- 处理数值 根据 条件
*设 a 为数据, m 为通过数值
所以根据
据2.1得:
if(a>0){m++;}
据2.2得:
for(int i=0;i<b;i++){m++}
4:细节处理
根据"数据范围"
得:
a,k 数据类型为long long
汇总: (k 为 b)
#include <iostream>
using namespace std;
int main(){
long long a,b,m=0;
cin>>a;#用于跳过数组长度数值,后面会重置
cin>>b;
for(int i=0;i<b;i++){cin>>a;if(a>0){m++;}}
cout<<m;
}
这里空空如也




有帮助,赞一个