有一道C语言的题目请教~~求高效算法~!!!

Input第一行为T(T<20),表示有T个公司。接下来每个公司第一行为整数n(n<10^5),表示该公司提供了n份金额不同的薪水。第二行为n个整数,表示这n份不同的薪水... Input
第一行为T(T<20),表示有T个公司。
接下来每个公司第一行为整数n(n<10^5),表示该公司提供了n份金额不同的薪水。
第二行为n个整数,表示这n份不同的薪水。
第三行为整数m(m<10^5),表示有m个人去面试。
第四行为m个整数,表示这m个人的期望薪水。

Output
对每个人输出一行,表示公司提供的最接近该面试者期望薪水的薪水。
每个公司之间用空行隔开。

Sample Input

1
5
1 2 3 4 5
3
2 4 6

Sample Output

2
4
5
面对同样接近的两份薪水,该公司会提供低薪水的职位给你,以节省经费。
公司提供的薪水和面试者的期望薪水都是无序的。
不好意思啊~~刚才忘了这个条件
展开
 我来答
wentianzhou
2010-12-10
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
不知这样可否:调用库函数中的quicksort()分别对N和M这两组数据建行排序;
然后修改折半排序的 判读(具体怎么判定那就看你怎么设计了) 条件,进行选择,时间复杂度为(M*log2 (n))!(n为m 与N中的较大值)不过排序时也要时间哦!但是M和N都可能比较大,我觉得先排序在查找比较好,呵呵....

你应该也是搞ACM的吧?

当然,本人个人觉得本题在某种意义上说,要揣测出题的测试数据才能设计出最好的算法...~~
黑仔二号
2010-12-04 · TA获得超过535个赞
知道答主
回答量:169
采纳率:0%
帮助的人:82.9万
展开全部
我是数痴啊,可别问我
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9ac060a
2010-12-04 · TA获得超过286个赞
知道小有建树答主
回答量:1013
采纳率:33%
帮助的人:182万
展开全部
慢慢写能写得出#35烦琐
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
843299951
2010-12-04 · TA获得超过458个赞
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:129万
展开全部
下面,水品就这点,不是很精切。凑合。
#include<stdio.h>
void output(int t,int a[],int b[],int,int);
int main()
{
int T,i,j,n,a[80];
printf("请输入公司数目不超过20\n");
scanf("%d",&T);
if(T>20)
return 0;
for(i=1;i<=T;i++)
{
printf("输入该公司%d提供的薪水数目n",i);
scanf("%d",&n);
if(n>80)
return 0;////////////////////////////////////////薪水数不超过80,定义才最高80
for(j=0;j<n;j++)
{
printf("输入该公司提供的薪水%d:",j+1);
scanf("%d",&a[j]);
}
printf("\n\n");
}
int m,k,b[80];
printf("请输入来应聘的人数m");
scanf("%d",&m);
for(k=0;k<m;k++)
{
printf("输入%d 的应聘期望薪水",k+1);
scanf("%d",&b[k]);
}
output(T,a,b,80,m);
return 0;
}
void output(int t,int a[],int b[],int i,int m)
{
int k,j;
for(k=1;k<=m;k++)
for(j=1;j<=t;j++)
{
if(a[k]>a[j]-500)////////////////////////////////////////////////////////接近多少算期望自己调
printf("最接近该应聘者%d期望工资%d的是公司%d\n",k,a[j],j);
else
printf("无适合该应聘者%d的工资",k);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寄情北国
2010-12-04 · 超过18用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
#include<vector>
using namespace std;
#include<stdio.h>
void* testp=freopen("test.txt","rt",stdin);

void main()
{
int N;
cin>>N;
for(int i=0;i<N;i++)
{
int n;
cin>>n;
vector<int>vn;
int x;
for(int j=0;j<n;j++)
{
cin>>x;
vn.push_back(x);
}
int m;
cin>>m;
vector<int>vm;
int y;
for(int k=0;k<m;k++)
{
cin>>y;
vm.push_back(y);
}

vector<int> money;
for(k=0;k<m;k++)
{
int cur=vn[0];
int num=abs(vm[k]-cur);
for( int p=1;p<n;p++)
if(num>abs(vm[k]-vn[p]))
{
cur=vn[p];
num=abs(vn[p]-vm[k]);
}
money.push_back(cur);
}

for(int e=0;e<m;e++)
{
cout<<money[e]<<endl;
}
}

}

注:另外创建一个文本文档"test.txt“,里面存下输入内容,把该文件和上面的CPP文件放在一起即可(文件流读入数据,方便输入改动数据)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cqljpv
2010-12-05 · TA获得超过1404个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:413万
展开全部
是C语言学完的课程设计吧 我们当时学完也有
并不难啊 自己耐心做做肯定能做出来的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笨小孩神童
2010-12-06 · 超过10用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:16.5万
展开全部
无能为力,不好意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式