这题想的跟题目要求不同导致不断的NA,在题目看来,相同大小的数字的排序也是不一样的,例如100 99 99 99 这四个数字,100是第一,99分别是第二第三第四,我的思路是99三个是重复应该并排第二,只能说坑了点。。
最近刷题都是随机做,随便点开一题做,没按顺序了
原题如下:
【问题描述】
N个小朋友在一起做游戏。
每个小朋友在自己的硬纸板上写一个数,然后同时举起来。
接着,小y老师提一个问题,看哪个小朋友先抢答出来。
问题是:在这N个数中,第K大的是哪个数?请你编程完成。
【输入格式】
输入文件的第一行为2个整数,依次为N和K,N,K<=10000。
下面N行,每行为一个整数,表示从第1个小朋友到第N个朋友分别写的数。假设这些小朋友只知道-32768~32767之间的数。
【输出格式】
输出文件只有一行,就一个数,为第K大的那个数。
【输入样例】
4 2
1
2
3
4
【输出样例】
3
代码部分如下,注释掉的部分是我的思路做的,如果题目要求是我的那种思路,那么就把注释去掉就行了
#include<algorithm> #include<iostream> using namespace std ; int main () { int n , k ; cin >> n ; cin >> k ; int cmp (int a ,int b ) ; int a[10000] ; for(int i = 0 ;i < n ;i++){ cin >> a[i] ; } sort(a,a+n,cmp) ; /*for(int j = 0 ;j< n-1 ;j++) { for(int k = j+1 ; k < n ; k++) { if(a[k] == a[j]) { a[k] = -40000 ; } } } sort(a,a+n,cmp) ;*/ cout << a[k-1] ; return 0 ; } int cmp (int a, int b ) { return a > b ; }
原文:http://blog.csdn.net/hhooong/article/details/43675635