poj 2051解题报告

这是我除了a+b外唯一秒杀的题.当然一次搞定是要付出代价的,看代码就知道了.这道题主要考的就是qsort的应用(又是qsort -_-!)另外波波觉得这道题比较有实际应用.

  1. #include <stdio.h>
  2. #include <memory.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. //数据储存结构
  6. typedef struct work{
  7.     int Q_number;
  8.     int period;
  9.     int lastTime;
  10. } work;
  11. work w1[1005],w2,w3[1005],*w4;
  12. //qsort的比较函数
  13. int compare(const void *p1,const void *p2)
  14. {
  15.     work a=*(work *)p1;
  16.     work b=*(work *)p2;
  17.     if(a.period > b.period )
  18.         return 1;
  19.     else if(a.period  == b.period  && a.Q_number  > b.Q_number )
  20.         return 1;
  21.     return -1;
  22. }
  23. int main()
  24. {
  25.     int wCount = 0,j,i,k;
  26.     char s[20];
  27.     //初始化
  28.     while(gets(s) && s[0] != '#') {
  29.         sscanf(s,"Register %d%d",&w1[wCount].Q_number,&w1[wCount].period);
  30.         w1[wCount].lastTime = w1[wCount].period;
  31.         wCount++;
  32.     }
  33.     qsort(w1,wCount,sizeof(work),compare);
  34.     memcpy(w3,w1,wCount*sizeof(work));
  35.     scanf("%d",&k);
  36.     for(i = 0; i < k; i++) {
  37.         printf("%d/n",w1[0].Q_number);
  38.         // 对数据进行更新
  39.         w1[0].lastTime += w1[0].period;
  40.         w2 = w1[0];
  41.         //将头元素按大小插入数组中,比较累赘
  42.         for( j = 1; j < wCount; j++)
  43.             if( w1[j].lastTime > w1[0].lastTime || ( w1[j].lastTime == w1[0].lastTime && w1[j].Q_number > w1[0].Q_number))
  44.                 break;
  45.         memcpy(w3,w1 + 1, (j - 1) * sizeof(work));
  46.         w3[j-1] = w2;
  47.         memcpy(w1,w3,wCount*sizeof(work));
  48.     }
  49. }

 

这道题相当的浪费空间和时间,不过还是比波波用c++写出来的代码快了100%  ^_^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值