返回   cpper编程论坛 > 算法
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

回复
 
LinkBack 主题工具 显示模式
  #1 (permalink)  
旧 2008-03-23
初级会员
 
注册日期: 2008-03-23
帖子: 3
tianxiawuzui 正向着好的方向发展
微笑 能更高效吗?

编写一个高效率的程序,确定一个给定字符串中最长的空格序列的长度,要求在字符串中检查的字符尽可能少。

始终找不到好的办法。大大帮忙想想?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #2 (permalink)  
旧 2008-03-23
bankrock 的头像
高级会员
 
注册日期: 2003-12-11
帖子: 843
文章: 7
bankrock 正向着好的方向发展
默认 回复: 能更高效吗?

做字符串的后缀树,一个个空格查下去就可以了
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #3 (permalink)  
旧 2008-03-23
Elminster 的头像
超级版主
 
注册日期: 2002-09-09
帖子: 1,763
Elminster 正向着好的方向发展
默认 回复: 能更高效吗?

引用:
作者: tianxiawuzui
编写一个高效率的程序,确定一个给定字符串中最长的空格序列的长度,要求在字符串中检查的字符尽可能少。

始终找不到好的办法。大大帮忙想想?
按照你的标题,你怎么也该先给一个解法,我们才好“更高效”不是?

引用:
作者: bankrock 查看帖子
做字符串的后缀树,一个个空格查下去就可以了
电锯折筷子 …… 而且后缀树对于这个问题不及直接的方法来的有效。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #4 (permalink)  
旧 2008-03-23
初级会员
 
注册日期: 2008-03-23
帖子: 3
tianxiawuzui 正向着好的方向发展
默认 回复: 能更高效吗?

sorry啊,我能想到的方法就是遍历每一个字符,但是又好像和要求不符:在字符串中检查的字符尽可能少;
没什么更高效的算法,所以SOS各位大大。树MS可以尽可能少的检查字符,虽然复杂了一点。

大大们,还有更好的办法吗?
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #5 (permalink)  
旧 2008-03-23
bankrock 的头像
高级会员
 
注册日期: 2003-12-11
帖子: 843
文章: 7
bankrock 正向着好的方向发展
默认 回复: 能更高效吗?

条件反射的想到了后缀树,像了一下确实用常规方法简单。
给楼主点提示,某个字符串s可能以最长的空字符串结尾,也可能最长空字符串在s中间,搜索时记录下这两种情况。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #6 (permalink)  
旧 2008-03-24
Elminster 的头像
超级版主
 
注册日期: 2002-09-09
帖子: 1,763
Elminster 正向着好的方向发展
默认 回复: 能更高效吗?

引用:
作者: tianxiawuzui 查看帖子
sorry啊,我能想到的方法就是遍历每一个字符,但是又好像和要求不符:在字符串中检查的字符尽可能少;
没什么更高效的算法,所以SOS各位大大。树MS可以尽可能少的检查字符,虽然复杂了一点。

大大们,还有更好的办法吗?
想想看,假设字符串里面还有 m 个字符你从来没有检查过,那么在什么情况下你可以不用检查这 m 个字符,就能确定整个字符串中最长的空白串在哪里呢?很显然,只有一种可能:你已经找到了一个空白串,长度大于 m 。嗯嗯,下面就看你怎么最大限度地利用这种可能,尽量减少检查字符的需要了。

唔,不过有一点必须指出:从算法分析的角度,不存在一个算法能够完全避免检查每一个字符。最简单的例子,给你一个不存在空格的字符串,你只有在检查每一个字符之后,才能确定这一点。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
  #7 (permalink)  
旧 2008-03-25
初级会员
 
注册日期: 2008-03-23
帖子: 3
tianxiawuzui 正向着好的方向发展
默认 回复: 能更高效吗?

引用:
作者: Elminster 查看帖子
想想看,假设字符串里面还有 m 个字符你从来没有检查过,那么在什么情况下你可以不用检查这 m 个字符,就能确定整个字符串中最长的空白串在哪里呢?很显然,只有一种可能:你已经找到了一个空白串,长度大于 m 。嗯嗯,下面就看你怎么最大限度地利用这种可能,尽量减少检查字符的需要了。

唔,不过有一点必须指出:从算法分析的角度,不存在一个算法能够完全避免检查每一个字符。最简单的例子,给你一个不存在空格的字符串,你只有在检查每一个字符之后,才能确定这一点。
对啊,我一开始的时候也想到,每次找到空格时,就跳过M个字符,再检查是否为空格,但是竟然没想到把M设置为目前空格串的最大长度。。。该死该死
这样最坏的情况就是遍历这个字符串。
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
回复时引用此帖
回复

书签

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为格林尼治时间 +9。现在的时间是 08:09 AM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0