• 数学趣题——选美比赛


       1: #include "stdio.h"
       2:  
       3: struct player {
       4:     int num;
       5:     int score;
       6:     int rand;
       7: } ;
       8:  
       9: // 根据对选手的得分排序
      10: void  sortScore(struct player psn[], int n)
      11: {
      12:     int i, j;
      13:     struct player tmp;
      14:  
      15:     for(i = 0; i < n - 1; i++)
      16:         for(j = 0; j < n - 1 - i; j++)
      17:         {
      18:             if(psn[j].score > psn[j+1].score)
      19:             {
      20:                 tmp = psn[j];
      21:                 psn[j] = psn[j+1];
      22:                 psn[j+1] = tmp;
      23:             }
      24:         }
      25: }
      26:  
      27: // 对已经根据得分排过序的选手,进行排名赋值
      28: void setRand(struct player psn[], int n)
      29: {
      30:     int i, j = 2;
      31:     psn[0].rand = 1;
      32:  
      33:     for(i = 1; i < n; i++)
      34:     {
      35:         if(psn[i].score != psn[i-1].score )
      36:         {
      37:             psn[i].rand = j;
      38:             j++;
      39:         }
      40:         else
      41:             psn[i].rand = psn[i-1].rand;
      42:  
      43:     }
      44: }
      45:  
      46: // 再按选手序号进行排序
      47: void  sortNum(struct player psn[], int n)
      48: {
      49:     int i, j;
      50:     struct player tmp;
      51:  
      52:     for(i = 0; i < n - 1; i++)
      53:         for(j = 0; j < n - 1 - i; j++)
      54:         {
      55:             if(psn[j].num > psn[j+1].num)
      56:             {
      57:                 tmp = psn[j];
      58:                 psn[j] = psn[j+1];
      59:                 psn[j+1] = tmp;
      60:             }
      61:         }
      62: }
      63:  
      64: void sortRand(struct player psn[], int n)
      65: {
      66:     sortScore(psn, n);         /*以分数为关键字排序*/
      67:     setRand(psn, n);          /*按照分数排名次*/
      68:     sortNum(psn, n);         /*按照序号重新排序*/
      69: }
      70:  
      71: int main()
      72: {
      73:     struct player psn[7] = {{1, 5, 0}, {2, 3, 0}, {3, 4, 0}, {4, 7, 0}, {5, 3, 0}, {6, 5, 0}, {7, 6, 0}};
      74:     int i;
      75:     sortRand(psn, 7);
      76:     printf("num   score rand  \n");
      77:  
      78:     for(i = 0; i < 7; i++)
      79:     {
      80:         printf("%d%6d%6d\n", psn[i].num, psn[i].score, psn[i].rand);
      81:     }
      82:  
      83:     return 0;
      84: }
      85:  
  • 相关阅读:
    求连续子数组的最大和
    【LeetCode练习题】Gas Station
    再来看看快速排序
    【LeetCode练习题】First Missing Positive
    【LeetCode练习题】Merge Sorted Array
    Hdu 2089-不要62 数位dp
    Tsinsen A1517. 动态树 树链剖分,线段树,子树操作
    Bzoj 3505: [Cqoi2014]数三角形 数论
    Poj 3695-Rectangles 矩形切割
    Tsinsen A1505. 树(张闻涛) 倍增LCA,可持久化线段树,DFS序
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1745026.html
Copyright © 2020-2023  润新知