Description
考虑在一个具有n个互不相同元素的数组A[1…n]中找出所有前k个最小元素的问题,这里k不是常量,即它是输入数据的一部分。
Input
第一行是一个整数m(1<=m<=9),表示有m组测试数据。
对每组测试数据,第一行有两个整数n(2<=n<=200)和k(1<=k<=n),分别表示这组测试数据有n个元素和所要求的前k个最小元素,接下来的一行为相应的n个元素(均为整数)。
Output
输出有m行,对应每组测试数据的前k个最小元素(要求按递增顺序输出)。注意每个数后面都跟着一个空格。
Sample Input
1 5 3 18011 20242 26644 15113 491
Sample Output
491 15113 18011
KEY:排序,然后输出前k个
Source:
#include < iostream >
#include < algorithm >
using namespace std;
int m,n,k;
int a[ 500 ];
int main()
... {
// freopen("fjnu_1764.in","r",stdin);
cin>>m;
int i,j,p;
for(i=1;i<=m;i++)
...{
cin>>n>>k;
for(j=0;j<n;j++)
cin>>a[j];
sort(a,a+n);
for(p=0;p<k;p++)
cout<<a[p]<<" ";
cout<<endl;
}
return 0;
}
#include < iostream >
#include < algorithm >
using namespace std;
int m,n,k;
int a[ 500 ];
int main()
... {
// freopen("fjnu_1764.in","r",stdin);
cin>>m;
int i,j,p;
for(i=1;i<=m;i++)
...{
cin>>n>>k;
for(j=0;j<n;j++)
cin>>a[j];
sort(a,a+n);
for(p=0;p<k;p++)
cout<<a[p]<<" ";
cout<<endl;
}
return 0;
}