九度OJ&北邮机试题题解(北邮2010网院)
题目一、九度OJ-1173:查找(水题随便搞)
ac.jobdu.com/problem.php?pid=1173
题目描述:输入数组长度 n
输入数组 a[1...n]
输入查找个数m
输入查找数字b[1...m]
输出 YES or NO 查找有则YES 否则NO 。
输入:输入有多组数据。
每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m<=n<=100)。
输出:如果在n个数组中输出YES否则输出NO。
样例输入:5
1 5 2 4 3
3
2 5 6
样例输出:YES
YES
NO
题目分析:
水题,随便搞,直接查询时间复杂度O(n),二分查询时间复杂度O(logn),但是数据无序,排序O(nlogn),看自己喜好吧。
AC代码:
/**
*@xiaoran
*太水
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int main()
{
int a[105],n,m,k;
while(cin>>n){
for(int i=0;i>a[i];
cin>>m;
int x;
for(int i=0;i
cin>>x;
for(k=0;k
if(x==a[k]) break;
}
if(k==n) cout<
else cout<
}
}
return 0;
}
题目二、九度OJ-1174:查找第K小数
http://ac.jobdu.com/problem.php?pid=1174
题目描述:查找一个数组的第K小的数,注意同样大小算一样大。
如 2 1 3 4 5 2 第三小数为3。
输入:输入有多组数据。
每组输入n,然后输入n个整数(1<=n<=1000),再输入k。
输出:输出第k小的整数。
样例输入:6
2 1 3 5 2 2
3
样例输出:3
题目分析:
题目是一个经典问题,有好多解释,这里让求不重复的第k小的值,排序+查询,a[i]!=a[i-1],k++。
AC代码:
/**
*@xiaoran
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
int a[1005];
int main()
{
int n,k;
while(cin>>n){
for(int i=0;i
cin>>a[i];
}
sort(a,a+n);
cin>>k;
if(k==1){
cout<
continue;
}
int j=1;
for(int i=1;i
if(a[i]!=a[i-1]) ++j;
if(j==k){
cout<