<前m大的数>的妙解

    前m大的数

  刚一看到这道题会很直接的想到,先将所有数求和,再排序,然后输出m大的数。显然这种方法--超时!!!

  所以有的同学很聪明想到用优先队列,先将得到的每个数放到队列中(队列是有序的),

  同时将m个之后的数舍去。这种方法就优化了很多。并且也能顺利ac。

  但是我要给大家介绍一种巧妙的解决这种问题的方法。

解:(采用基数排序的思想)

    因为数据最大不会超过5000,所以和也不会超过10000;

    从而建立数组a[10005](保险起见),记录所有的可能的和会出现的次数,并赋初值为0(和都还没出现过)。

    数组b[]记录输入的数据;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2014-03-15 15:04  少年小白  阅读(216)  评论(0编辑  收藏  举报