<前m大的数>的妙解
刚一看到这道题会很直接的想到,先将所有数求和,再排序,然后输出m大的数。显然这种方法--超时!!!
所以有的同学很聪明想到用优先队列,先将得到的每个数放到队列中(队列是有序的),
同时将m个之后的数舍去。这种方法就优化了很多。并且也能顺利ac。
但是我要给大家介绍一种巧妙的解决这种问题的方法。
解:(采用基数排序的思想)
因为数据最大不会超过5000,所以和也不会超过10000;
从而建立数组a[10005](保险起见),记录所有的可能的和会出现的次数,并赋初值为0(和都还没出现过)。
数组b[]记录输入的数据;