忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 286176 | 回复: 477

华为面试题(8分钟写出代码) [复制链接]

论坛徽章:
0
发表于 2006-11-13 00:56 |显示全部楼层
有两个数组a,b,大小都为n,数组元素的值任意,无序;
要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小

论坛徽章:
0
发表于 2006-11-13 07:54 |显示全部楼层
先各自排序,再交叉存放较大无素

论坛徽章:
0
发表于 2006-11-13 08:33 |显示全部楼层
难度太大。

论坛徽章:
0
发表于 2006-11-13 09:10 |显示全部楼层
负数差是不是不考虑?

论坛徽章:
0
发表于 2006-11-13 09:14 |显示全部楼层
2楼的算法应该是得不出最小差的

论坛徽章:
0
发表于 2006-11-13 09:33 |显示全部楼层
先整体排序,再交叉取数

论坛徽章:
0
发表于 2006-11-13 09:34 |显示全部楼层
放到一个临时数组里排序后,两头取,分别存在a,b里

论坛徽章:
0
发表于 2006-11-13 10:16 |显示全部楼层

哈哈。编好了。不知道思路是否正确,错就一定有的。

刚学编程两个月,不知道思路是否正确,错就一定有的。

#include"stdio.h"
com(int a[2000],int n)
{int i,j,p,q,s;
for(i=0;i<2*n-1;i++)
  {
a[0]=q,p=i;
  for(j=i+1;j<2*n;j++)
  if(a[j]>q)
{q=a[j];p=j;}
if(i!=p)
{a=s;
s=a[p];
a[p]=a;
}
return(a[2*n-1);
   }
for(i
main()
int a[1000],b[1000],c[2000],n,j,k,p,q;
printf("input two same struct array and same long\n");
scanf("%d",&n);
printf("input first struct array");
for(i=0;i<n;i++)
scanf(%d",a);
printf("input secend struct array");
for(i=0;i<n;i++)
scanf(%d",b);
for(i=0;i<n;i++)
c=a;
for(i=0;i<n;i++)
c[n+i+1]=b;/*结合两组数据*/
c[n+i+1]=[com(c[n+i+1],n);/*并排列大小*/
for(i=0;i<n;i++)
{a=0;
b=0;}/*清0*/
a[0]=c[0];
b[0]=c[1];
s=1;
t=1;
p=0;
q=0;
for(i=2;i<2*n-1;i++)
   {
if(s==n-1)\*判断是否已经分好了一个数组*\
{for(i=n+t-1;i<2*n-1;i++,t++)
b[t]=c[n+t-1];
break;}
if(t==n-1)\*判断是否已经分好了另一个数组*\
{for(i=n+s-1;i<2*n-1;i++,s++)
b=c[n+s-1];
break;}
   for(j=0;j<s;j++)
    p+=a[j];\*求数组a[j]的值*\
         
   for(j=0;j<t;j++)\*求数组a[j]的值*\
     q+=b[j];

if(p>q)\*判断已经分好的数组大小,并分配下一数值到较少的数组*\
{c=b[t];
t++;}
else{c=a
s++;}
    }
for(i=0;i<n;i++)
printf("a=%d ",a);
printf("\n");
for(i=0;i<n;i++)
printf("b=%d ",b);

getch();

}

[ 本帖最后由 hithotwinds 于 2006-11-13 10:25 编辑 ]

论坛徽章:
0
发表于 2006-11-13 10:17 |显示全部楼层
全部加起来除2,然后试算

论坛徽章:
0
发表于 2006-11-13 10:47 |显示全部楼层
设一个变量,类似于天平的指针,就像用天平称东西一样,只不过用变量来记录他们之间的差。然后,根据这个差对下次比较的双方进行调整,再对这个差进行调整,如此反复。不知可否??

[ 本帖最后由 12013396 于 2006-11-13 10:59 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP