网站首页
本站精华
免费下载
游客:
注册
|
登录
|
会员
|
搜索
|
帮助
LoveUnix
»
职业咨询 前程无忧
» IBM挑戰
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: IBM挑戰
瓜小南
荣誉斑竹
UID 128
精华
32
积分 1808
帖子 3485
活跃指数 10
LU金币 188 个
LU金条 0 个
阅读权限 200
注册 2003-9-26
#1
大
中
小
使用道具
发表于 2004-1-24 13:43
资料
个人空间
短消息
加为好友
IBM挑戰2004年1月原文
Ponder This Challenge: This month's puzzle was sent in by Joe Buhler.
It came from a SIGCSE meeting via Eric Roberts.
A read-only array of length n, with address from 1 to n inclusive,
contains entries from the set {1, 2, ..., n-1}.
By Dirichlet's Pigeon-Hole Principle there are one or more duplicated
entries. Find a linear-time algorithm that prints a duplicated value,
using only "constant extra space". (This space restriction is
important; we have only a fixed finite number of usable read/write
memory locations, each capable of storing an integer between 1 and n.
The original array entries can not be altered.) The algorithm should
be easily implementable in any standard programming language.
一个长度为n的唯读阵列(位址为1至n)所包含的元素是整数,每个元素的大小是由1至n-1。由鴿巢原理,至少有兩个不同位址的元素值是重复的。
请作出一个算法,以列印出其中一个重复的元素值。条件是:
1. 算法运行所需的时间是线性的;
2. 只有固定有限个記憶位址可供读寫之用,每个記憶位址只可儲存一个大小是由1至n的整数;
3. 原阵列不能修改;
4. 算法应该以任何標準程式語言都可容易施行。
我们匆匆相识 匆匆言爱 匆匆相许一生,
爱情也许并没有那么真的让我们那么失望,
失望只是由于我们自己的放弃。
午夜梦回。
略为清醒的时刻,
总是会想起她。
相信, 她也会想起我。
sunshinesh
LU新生
UID 2663
精华 0
积分 18
帖子 35
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-18
#2
大
中
小
使用道具
发表于 2004-1-24 22:42
资料
个人空间
短消息
加为好友
不能求和? 然后减去S(1~(n-1))
明确一下吧,楼主也不说话的
对矩阵各位相加求和,然后减去 1~N-1 的和就得出重复的数值了
南卉
版主
UID 61
精华
22
积分 1953
帖子 3726
活跃指数 38
LU金币 6670 个
LU金条 0 个
阅读权限 210
注册 2003-9-19
#3
大
中
小
使用道具
发表于 2004-1-27 10:11
资料
个人空间
短消息
加为好友
晕倒~~
看见这样的题目,哦只有吐血而S的份了
连题目哦都看不懂~~
万事皆缘,随遇而安
sunshinesh
LU新生
UID 2663
精华 0
积分 18
帖子 35
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-18
#4
大
中
小
使用道具
发表于 2004-1-27 12:08
资料
个人空间
短消息
加为好友
卉mm就是这么可爱
术业有专攻嘛。
larryh
超级版主
UID 133
精华
29
积分 3989
帖子 7369
活跃指数 258
LU金币 3777 个
LU金条 5409 个
阅读权限 251
注册 2003-9-26
#5
大
中
小
使用道具
发表于 2004-1-27 12:22
资料
个人空间
短消息
加为好友
没那个水平,只能分析难点了:
1、只读数组:意味着不能排序
2、并非只能有两个个重复的值(可以同时有3个1、2个8、7个109…):累加算法无用
一般直接比较的算法,复杂度都不可能是线性的
sky-walker
LU大天使
UID 1585
精华
21
积分 1537
帖子 2989
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 70
注册 2003-11-3
#6
大
中
小
使用道具
发表于 2004-1-27 12:29
资料
个人空间
短消息
加为好友
鸽巢原理说的是-至少-
算法时间的线性是要重点考虑的
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
sky-walker
LU大天使
UID 1585
精华
21
积分 1537
帖子 2989
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 70
注册 2003-11-3
#7
大
中
小
使用道具
发表于 2004-1-27 12:32
资料
个人空间
短消息
加为好友
嘿嘿,又想了一下,晕了
复杂的远远超出了
数学没学好,后悔呀
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
sunshinesh
LU新生
UID 2663
精华 0
积分 18
帖子 35
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-18
#8
大
中
小
使用道具
发表于 2004-1-27 13:43
资料
个人空间
短消息
加为好友
呵呵 这下明白题目了 :)
得想想了。。。。。。
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
sunshinesh
LU新生
UID 2663
精华 0
积分 18
帖子 35
活跃指数 0
LU金币 2006 个
LU金条 0 个
阅读权限 10
注册 2003-11-18
#9
大
中
小
使用道具
发表于 2004-1-27 14:04
资料
个人空间
短消息
加为好友
那这样行不行?:
假设原矩阵为OLD,这样各元素表示为OLD(x) 1<=x<=(n-1)
建立位址为 1~n-1 的线性矩阵 NEW,预置所有值为零
For x= 1 to n-1
If NEW(OLD(x)) =0
Then NEW(OLD(x)) =1
Else Print(OLD(x))
只是把现有矩阵里面的值转换为新矩阵的下标来记录 第一次读到则置为1
下次读到则输出
你看行不行?
[广告]
记录自己的思想火花,留住每日的技术积累,尽在拥有属于自己独立域名的博客。
投票
交易
悬赏
活动
LoveUnix
专项技术区
> AIX -IBM UNIX
> 其他UNIX & Linux
> i5 (AS400) & IBM大机
> PC Server & HPC
> 存储设备
> 备份软件
> 网络 & 安全
> 编程开发 & Rational
> DB2 & Informix
> ORACLE等数据库
> 中间件技术
行业综合区
> 职业咨询 前程无忧
> 培训认证 行业入门
> 行业应用 项目实施
> 产品信息 商务交流
> Free download下载
交流灌水区
> 蓝色太平洋
> 墨香雅韵
> 共建家园
> 博客专区
当前时区 GMT+8, 现在时间是 2008-8-30 11:50
乐悠LoveUnix论坛-京ICP备05005823号
Thanks to
Discuz!
© 2001-2007 Power by
LoveUnix.net
Processed in 0.083356 second(s), 6 queries , Gzip enabled
TOP
清除 Cookies
-
联系我们
-
乐悠LoveUnix
-
Archiver
界面风格
----------
Discuz! 5 Default
新DISCUZ风格
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
流量统计
客户软件
发帖量记录
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计