| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1218 人关注过本帖
标题:有道例题,很多地方不明白,请大佬指教,万分感谢!
取消只看楼主 加入收藏
fxjorry
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2018-4-6
结帖率:0
收藏
 问题点数:0 回复次数:0 
有道例题,很多地方不明白,请大佬指教,万分感谢!
中考成绩出来了,许多考生想知道自己成绩排名,考试委员会找到你,希望你能完成一个成绩查找程勋,考生只需要输入成绩,即可知道其排名和同分数人数
输入格式1行数N(N<=10000),2行为一个数K,3行为N个以空格隔开从大到小的所有考生成绩(整数),接着K个待查找的考生成绩
输入样例:10
          2
          580 570 565 564 564 534 534 534 520 520
          564 520
输出样例:4 2 3
          6 2 8
程序如下:
1 #include<iostream>
2 #include<cstring>
3 const int MAXN=10010;
4 using namespace std;
5 int main()
6 {
7    int a[MAXN],b[MAXN],s[MAXN];
8    int mark,temp=-1,n,k,x,low,high,mid=0,rank=0;
9    cin>>n>>k;
10    memset(b,0,sizeof(0));
11    for(int i=1;i<=n;i++)
12    {
13        cin>>mark;
14        if(mark==temp) b[rank]+=1;
15        else
16        {
17            a[++rank]=mark;
18            s[rank]=i-1;
19            b[rank]=1;
20        }
21        temp=mark;
22     }
23     for(int i=1;i<=k;i++)
24     {
25         cin>>x;
26         low=1;
27         high=rank;
28         while(low<=high&&a[mid]!=x)
29         {
30             mid=(low+high)/2;
31             if(a[mid]<x) high=mid-1;
32             else low=mid+1;
33         }
34         if(a[mid]==x) cout<<mid<<" "<<b[mid]<<" "<<s[mid]<<endl;
35         else cout<<"fail"<<endl;
36     }
37     return 0;
38     }
 求教:1、第3行n<=10000,为什么数组const int MAXN=10010而不是10001
2、第8行定义变量中,temp代表什么(是否代表前一个分数值),为什么初始值要为temp=-1而不是0
3、19行将自己统计人相同分数的人,为什么b[rank]=1?而不是其他写法?
万分感谢大佬们
搜索更多相关主题的帖子: 成绩 int temp mid rank 
2018-04-16 22:25
快速回复:有道例题,很多地方不明白,请大佬指教,万分感谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016703 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved