标题:一道思科的笔试题
只看楼主
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
得分:0 
吃饭去,你们继续,我下午来看最好的algorithm
2007-08-23 11:51
lishizelibin
Rank: 2
等 级:论坛游民
帖 子:513
专家分:41
注 册:2007-5-10
得分:0 
int do_dup(int a[],int N)
{
int i = 0;
int num = 0;
int *count =(int*)malloc(N*sizeof(int));
memset(count,0,N*sizeof(int));
for(i=0;i<N;i++)
{
if(2==(++count[a[i]]))
{
num=a[i];
break;
}
}
free(count);
return num;
}
高人写的据说不错!
下面有一个短写法:
int do_dup(int a[],int N)
{
int n=0;
for( int i=0;i<N;n+=a[i]-i++ );
return n;
}

在vc6下,更可以写成:
int do_dup(int a[],int N)
{
for( int i=0, int n=0;i<N;n+=a[i]-i++ );
return n;
}

注:我只负责贴出给大家看看,交流学习

[此贴子已经被作者于2007-8-23 12:15:00编辑过]


惟有学习不断的学习!
2007-08-23 12:11
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
以下是引用lishizelibin在2007-8-23 11:00:14的发言:

#include<stdio.h>
#define N 10
void main()
{
int a[N]={1,2,3,4,5,6,7,7,8,9};
int pi[N]={0};
int key=0;
for(int i=0;i<N;i++)
{
if(pi[a[i]]==0)
pi[a[i]]=a[i];
else
{
key=a[i];
break;
}
}

printf("多余的数字是%d\n",key);
}
[我不喜欢…………]




有bug吧,如果我a[]中的一个数字大于N的值,那就不对了


编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-08-23 16:33
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
楼上请看题目吧
2007-08-23 16:38
酒肉弥勒佛
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:399
专家分:0
注 册:2006-6-6
得分:0 
哦,要是这样的话,那就可以这样做啊,把理想状态下没有重复的数组的值加起来得到a1,在把实际用个重复的数组的值加起来得到a2,那重复的数就是a[N](l理想状态下最大的数)-(a1-a2)啊
这个不是更简单?

编程是为了提高效率,好的程序是因为他的高效;在编程的道路上,永远追逐高效的算法
2007-08-23 16:53
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
得分:0 
这样可以么
#include<stdio.h>
#define N 12
main()
{
int a[]={1,2,3,4,1,5,6,7,7,8,9,2},b[N]={0},i=0;
for(i=0;i<N;i++)
if(b[a[i]])
printf("重复的数字是%d\n",a[i]);
else b[a[i]]=1;
}

[此贴子已经被作者于2007-8-23 19:24:46编辑过]


羊肉串 葡萄干 哈密瓜!!
2007-08-23 19:24
linjj7
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-8-23
得分:0 
2007-08-23 19:46
ouyang1014
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-1
得分:0 

还真的是看不懂  这样也能?

2007-08-23 21:56
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
得分:0 
32楼的和福尔磨丝的思路不是样的么?

2007-08-23 22:28
zhangfei
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-24
得分:0 
hash
2007-08-24 01:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-164597-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.352597 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved