这题想的跟题目要求不同导致不断的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