看了半天没看出来哪里不对。一般方法求最接近的最小数。非降序。
#include
using namespace std;
int a[100000]={0};
int b[100000]={0};
int cmp(int b,int n,int a[])
{
int i,tag1,tag2;
for(i=1;i<=n;++i)
{
if(a[i]>=b)
{
if(i=1)
return a[i];
else
{
tag1=a[i];
tag2=a[i-1];
if(tag1-b>=b-tag2)
return tag2;
else
return tag1;
}
}
}
return a[n];
}
int main()
{
int n,m,i,tmp;
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=1;i<=m;++i)
scanf("%d",&b[i]);
for(i=1;i<=m;++i)
{
tmp=cmp(b[i],n,a);
printf("%d\n",tmp);
}
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)