zoukankan      html  css  js  c++  java
  • hdu1031 Design TShirt 解题报告 sort的使用

    http://acm.hdu.edu.cn/showproblem.php?pid=1031

    考察sort的用法 将 k排 每排m个数 上下加和 得到一排 m个数 然后按照得分从大到小的顺序排序 得分相同 将原来编号小的放在前面 取得前k个再次按照编号由小到大进行排序

    输出排序后的结果 使用结构体保存排序之前的编号 在自己定义只对于数据的排序函数用于sort

    最开始没理解题意 以为就是取第一次排好序的前几个没进行第二次排序 并且对于得分相同没做处理直接忽略 测试数据一值不过

    代码如下:

     1 #include<iostream>
    2 #include<cstdio>
    3 #include<algorithm>
    4 using namespace std;
    5 struct case1 //用num保存排序之前的编号
    6 {
    7 int num;
    8 float data;
    9 };
    10 case1 a[1000];
    11 int cmp(const case1 &a,const case1 &b) //定义cmp函数用于sort的参数
    12 {
    13 if(a.data==b.data)
    14 return a.num<b.num;
    15 return a.data>b.data;
    16
    17 }
    18 int cmp2(const case1 &a,const case1 &b)
    19 {
    20 return a.num>b.num;
    21 }
    22 void init(case1 a[],int n)
    23 {
    24 int i;
    25 memset(a,0,sizeof(a));
    26 for(i=0;i<n;i++)
    27 {
    28 a[i].num=i+1;
    29 }
    30 }
    31 int main()
    32 {
    33 // freopen("test.txt","r",stdin);
    34 // freopen("print.txt","w",stdout);
    35 int n,m,k,i,j,k1;
    36 float temp;
    37 while(scanf("%d %d %d",&n,&m,&k)!=EOF)
    38 {
    39 memset(a,0,sizeof(a));
    40 init(a,1000);
    41 for(i=0;i<n;i++)
    42 {
    43 for(j=0;j<m;j++)
    44 {
    45 scanf("%f",&temp);
    46 a[j].data+=temp;
    47 }
    48 }
    49 sort(a,a+m,cmp);
    50 sort(a,a+k,cmp2);
    51 for(i=0;i<k;i++)
    52 {
    53 if(i==0)
    54 printf("%d",a[i].num);
    55 else
    56 printf(" %d",a[i].num);
    57 }
    58 printf("\n");
    59 }
    60
    61 //system("pause");
    62 return 0;
    63 }
  • 相关阅读:
    spark实验四(2)
    spark实验四
    神奇的一天
    Spark实验三
    Scala实验任务三
    Scala实验任务二
    Scala语言实验任务一
    kettle的基本使用
    质量属性之安全性战术
    datax相关
  • 原文地址:https://www.cnblogs.com/yujiaao/p/2114873.html
Copyright © 2011-2022 走看看