• 2020-10-25


    7-11 互评成绩 (25分)
     

    学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。

    输入格式:

    输入第一行给出3个正整数N(3 N ≤,学生总数)、k(3 ≤ k ≤ 10,每份作业的评审数)、M≤ 20,需要输出的学生数)。随后N行,每行给出一份作业得到的k个评审成绩(在区间[0, 100]内),其间以空格分隔。

    输出格式:

    按非递减顺序输出最后得分最高的M个成绩,保留小数点后3位。分数间有1个空格,行首尾不得有多余空格。

    输入样例:

    6 5 3
    88 90 85 99 60
    67 60 80 76 70
    90 93 96 99 99
    78 65 77 70 72
    88 88 88 88 88
    55 55 55 55 55
    
     

    输出样例:

    87.667 88.000 96.000

    https://blog.csdn.net/qq_37708702/article/details/79592525

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<climits>
     5 using namespace std;
     6 bool cmp(double a,double b){
     7     return a > b;
     8 }
     9 int main(){
    10     int n,k,m,a,mx,mn,kx;
    11     double sum,arr[10001];
    12     scanf("%d%d%d",&n,&k,&m);
    13     memset(arr,0,sizeof(arr));
    14     kx = 0;
    15     for(int i = 0;i < n;i++){
    16         mx = INT_MIN,mn = INT_MAX,sum = 0;//最大值初始化为最小值,最小值初始化为最大值 
    17         for(int d = 0;d < k;d++){
    18             scanf("%d",&a);
    19             mx = max(a,mx);
    20             mn = min(a,mn);
    21             sum += a;
    22         }       
    23         sum = sum - mx - mn;
    24         arr[kx++] = sum / (k - 2);
    25     }
    26     sort(arr,arr + kx,cmp);//写代码要严谨,竟然把kx写成k了,反思!!! 
    27     for(int i = m - 1;i >= 0;i--){
    28         if(i)
    29             printf("%.3lf ",arr[i]);
    30         else
    31             printf("%.3lf
    ",arr[i]);
    32     }
    33     return 0;
    34 }
    7-9 小字辈 (25分)
     

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。

    输入格式:

    输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。

    输出格式:

    首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

    输入样例:

    9
    2 6 5 5 -1 5 6 4 7
    
     

    输出样例:

    4
    1 9

    https://blog.csdn.net/shiliang97/article/details/97865961

     1 #include<iostream>
     2 using namespace std;
     3 int zuzong[100005];
     4 int countzu[100005];
     5 int count(int i){
     6     if(countzu[i]==0){
     7     int coun=1;
     8     if(zuzong[i]!=-1){
     9         coun=count(zuzong[i])+1;
    10     } else{
    11         coun=1;
    12     }
    13     countzu[i]=coun;
    14     return coun;
    15     }
    16     else{
    17         return countzu[i];
    18     }
    19 }
    20 int main(){
    21     int n;
    22     cin>>n;
    23     int a;
    24     
    25     for(int i=1;i<=n;i++){
    26         cin>>a;
    27         zuzong[i]=a;
    28     }
    29     int max=0;
    30     for(int i=1;i<=n;i++){
    31         countzu[i]=count(i);
    32         if(count(i)>max){
    33             max=count(i);
    34         }
    35     }
    36     cout<<max<<endl;
    37     int flag=1;
    38     for(int i=1;i<=n;i++){
    39         if(countzu[i]==max){
    40             if(flag){
    41             cout<<i;
    42             flag=0;    
    43             }else{
    44                 cout<<" "<<i;
    45             }
    46             
    47         }
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    代理模式
    spring aop
    mybatis从入门到精通(其他章节)
    mybatis从入门到精通(第6章)
    Java中Compareable和Comparator两种比较器的区别
    Java的equals方法的使用技巧
    Dubbo的配置过程,实现原理及架构详解
    什么是IPFS?IPFS与区块链有什么关系
    leetCode242 有效的字母异位词
    需要多个参数输入时-----------------考虑使用变种的Builder模式
  • 原文地址:https://www.cnblogs.com/-gcq/p/13875761.html
Copyright © 2020-2023  润新知