注册 登录
编程论坛 新人交流区

microsoft的一道面试题

Alex_Lau 发布于 2007-10-17 22:32, 883 次点击
有2*n+1个数,其中有2n个数是成对的,只有一个是不同的,找出这个数。
例如:输入: 12 54 12 678 54 678 1000
输出:1000
1000是落单的
用简便方法,只几行代码
24 回复
#2
Alex_Lau2007-10-18 20:32
会做的不会做的都留下姓名吧,相互讨论一下,想知道答案的回帖
#3
zhaoqingp2007-10-18 23:04
我感觉用栈做比较简单一点,不知道是否。。。。
#4
xhtang2007-10-19 00:27

普通的方法很多可以实现,我觉得这道题应该会有一个比较高较的算法的,,

#5
cqusuperyang2007-10-19 17:40
#6
稀饭老鼠2007-10-19 18:03
#7
neillopv2007-10-19 18:51
题目的意思难道就是找出一个数,有且只出先一次?
#8
blosaa2007-10-19 21:17
这个题目很简单,小儿科,只要你把我的程序稍微改一下就ok!!!!!!

哈哈!!!!!!

#include<stdio.h>

void main()
{
int i,j,b[7]={0,0,0,0,0,0,0},a[7]={12,54,12,678,54,678,1000};
for(i=0;i<6;i++)
{
for(j=i+1;j<7;j++)
{
if(a[i]==a[j])
{
b[i]=1;
b[j]=1;
}

}
}
for(i=0;i<7;i++)
{
if(0==b[i])
{
printf("%d\n",a[i]);
}
}
}
#9
chyy2342007-10-19 21:25
请说!
#10
chyy2342007-10-19 21:26
谁教我 c语言
#11
chyy2342007-10-19 21:27
#12
Alex_Lau2007-10-19 22:53
注意n的值是可以动态输入的哟
#13
Alex_Lau2007-10-19 22:54
楼上的做法当值很多的时候还是很复杂,还有更简单的算法
#14
rediums2007-10-19 23:02
……

[此贴子已经被作者于2007-10-19 23:21:16编辑过]


#15
tx495202007-10-19 23:25
这不是VB的吗?C++高手也有呀:)
#16
blosaa2007-10-20 08:26
自学语言才有效果,别人教没用的!!!!!!!

你把书多看几遍!!!!!!!!!

读书百遍其意自现!!!!!!!!!!
#17
blosaa2007-10-20 08:34
"Alex_Lau",我想说的是问题是死的,人是活的。我的程序可以改的简单,甚至输入n个数都没问题,方法在哪个地方了,看你会不会改。

我认为你学的很死,一点都不灵活,这和学数学是一样的撒,例如:

for(i=0;i<2*n+1;i++)
b[i]=0;

不就可以判断n个数了!!!!!!!!!!!!


大哥呀!!!!!!!给了提示都不会呀,请多看别人的程序。
#18
wb82520252007-10-20 09:16
cgh
#19
sunfishy2007-10-20 09:24
#20
lwf_20202007-10-20 09:34
好玩
#21
Alex_Lau2007-10-20 12:08
blossa的做法是一般人的做法,微软不会录取你,真正高效的做法如下:
#include<iostream.h>
void main()
{
int a=0,b=0,n=0,m=0;
cin>>n;
m=2*n+1;
while(m--){
cin>>b;
a=a^b;
}
cout<<a<<endl;
}
#22
blosaa2007-10-20 13:00
不错,比较经典,上面程序值得学习,很好!!!!!
#23
rediums2007-10-20 14:00
好久没有看到这么精妙的算法了,以前在学习汇编的时候看到过一个简单的字符串加密程序,用的就是这个原理,
哎……学艺不精呀
学习了,楼主以后可要多多指教呀
#24
fanerw2007-10-20 15:13
回复:(Alex_Lau)blossa的做法是一般人的做法,微软...
高,以前也见过“^”,总是没有多想,觉得没什么大用,现在才觉得,高手并不是学会面向对象了,懂得继承和多态了,会用虚函数了,才叫高手.高手往往于平淡中见其精妙!!

学会了,沉思中
#25
feixue10392007-10-20 15:27
你不妨试一下,先给它用冒泡啊什么的排个序,再比较相邻的两个数,如果相同的话,数组的标加二,如果不同,加一,再比较加一后的那个数是不是跟后面的那个数相同就可以了。
1