广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 3262 个阅读者
 
<<   1   2  下页 >>(共 2 页)
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
孙子兵法
数位造型
个人文章 个人相簿 个人日记 个人地图
路人甲
级别: 路人甲 该用户目前不上站
推文 x0 鲜花 x0
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[C/C++][求助] 帮帮忙一下!!提式一下吧
练习的时候碰到一个题目:
palindrome(包含一个单字或是一个去掉空白、逗点的字串,不论大小写字母,前后完全对称者)

试写一递回函数,如果输入之字 ..

访客只能看到部份内容,免费 加入会员 或由脸书 Google 可以看到全部内容



献花 x0 回到顶端 [楼 主] From:东森 Cable | Posted:2007-06-10 23:24 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

把字串长度除以二, 那么字串就一分为二, 变成两个子字串了!
把后面那一段子字串里的字元以相反的顺序排列, 然后再拿来与前面那一段子字串比对!

我是猜的, 你试看看!


献花 x0 回到顶端 [1 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-11 04:08 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

作法应该就是先取得长度,再用两个数当索引值一个从字串头,另一个从字串尾,分别递增及递减一一比对,至于如何避开,点和空白 以及不论大小写 自己想吧...


献花 x0 回到顶端 [2 楼] From:台湾永大数位动力公司 | Posted:2007-06-11 05:15 |
a86980
个人文章 个人相簿 个人日记 个人地图
小有名气
级别: 小有名气 该用户目前不上站
推文 x64 鲜花 x1308
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

第1回圈
从第一字元读到最后一个字元
记下总数(去除符号)

第2回圈(=总数)
再从最后一个字元递减到开始字元

如果第1回圈=第2回圈则传1
反之传回0

应该是这样吧


献花 x0 回到顶端 [3 楼] From:台湾 | Posted:2007-06-12 22:41 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

看了一下, 我认为你还是用我的方法会比较好唷!
把长度除以二, 只将后半段反转顺序再比对, 很快!
若用他们的方法, 整个字串反转再比对不但记忆体用得比较凶, 连时间复杂度 big O 都增加许多!
而且拿 Madam I'm Adam 来当例子好了, 用我的方法, 是比对 Madam 与 madA m! 他们的方法则是比对整个字串, Madam I'm Adam 与 madA m'I madaM, 想想看, 一定更麻烦的...


献花 x0 回到顶端 [4 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-13 01:53 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用ety于2007-06-13 01:53发表的 :
看了一下, 我认为你还是用我的方法会比较好唷!
把长度除以二, 只将后半段反转顺序再比对, 很快!
若用他们的方法, 整个字串反转再比对不但记忆体用得比较凶, 连时间复杂度 big O 都增加许多!
而且拿 Madam I'm Adam 来当例子好了, 用我的方法, 是比对 Madam 与 madA m! 他们的方法则是比对整个字串, Madam I'm Adam 与 madA m'I madaM, 想想看, 一定更麻烦的...

不过ety大大...我有个疑问 , 我刚刚算了一下 , 这个字串有14个字元 , 长度除以2 切割后...
一个为   : Madam I
另一个为 : 'm Adam 反转后 madA m'
两者都去掉空白以及其他符号同时再把它们都转成大写..
MADAMI
MADAM
这样子比对应该会被认为不对称吧....因为前者多了一个 I
( 还是说我误解你意思了 , 如果有弄错的话...抱歉^^" )

还有其实我说的作法是只要用一个while回圈就可以达成的 , 一取得字串长度就可以开始比了...而且并非比完整个字串 ...


[ 此文章被gamewalk在2007-06-13 04:01重新编辑 ]


献花 x0 回到顶端 [5 楼] From:台湾永大数位动力公司 | Posted:2007-06-13 03:50 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

要先除去符号, 空白以及转变大小写唷!

"Madam I'm Adam" 会变为 "MadamImAdam", 就如我之前说的, 字串一分为二且反转后半段, 只要比对 Madam 与 madAm! (MadamImAdam长度为十一, 除二为五, 不考虑余数, 所以 I 不用管)

我把我的方法实作出来了, 的确可行!

我的方法花了两个变数空间, 各储存了长度为5的字串, 你的方法是存完整字串的长度耶...
我的方法比对时是比对两个长度为5的字串, 你的是比对完整字串耶...

不管你取得长度后是一个字元对一个字元比对, 还是整个字串比对, 我的用量都比你少!
就算用回圈, 我跑的圈数也比你少!

你有没有听过递回这种程式写法呢?
这种方法的程式码通常比一般方法的程式码来得少, 也简单. 但时间复杂度与记忆体的用量也比一般用法惊人...

所以就算精简程式码, 也不见得有效率唷


献花 x0 回到顶端 [6 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-13 20:00 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

的确你的方法是在除去符号空白及转完大小写后就能实现...但是如果同样的除去符号空白及转完大小写条件下 用while回圈也只要跑5次吧...

还有一件事希望ety大大别介意 , 其实当自己的程式被质疑说瑕疵时难免会想要辩解 , 我有可能一时被你前面讲的话影响到 , 才会一时冲动有点预设立场的质疑你的程式 表情


献花 x0 回到顶端 [7 楼] From:台湾永大数位动力公司 | Posted:2007-06-13 22:34 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

为什么要哭丧着脸呢... = ="

程式当然要质疑一下, 最好还要亲自开发看看! 你看不明白我的说法, 那表示其它人或许也会看不懂, 所以我就再说明清楚一点, 这样不就大家都了解了吗? ^^

求出长度后用 while (递减的方式来比对) 来说, 你要如何在长度一半(这里指5)内比对呢? 应该要跑到底才对了... 若用 for 就有可能了!


献花 x0 回到顶端 [8 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-13 23:17 |
gamewalk
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x18
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

假设在转完的情况下
复制程式
int Checkpalindrome()
{
    int i,j;
    char Str[] = "MADAMIMADAM"; //假设已将"Madam I'm Adam"转换完毕好了 
    i=0;   //从字串头
    j=strlen(Str) - 1; //从字串尾
    while( i < j )
    { 
           if( Str[i] == Str[j] )
           {
               i++;
               j--; 
           }
           else
           {
                return 0; 
           } 
    }
    return 1; 
}

如果没有问题 第五次跑完 I不用比就结束了....
不过你讲的时间复杂度...我真的不是很熟所以我也没有办法反驳你

刚才才注意到楼主似乎有要求要用递回写....可能要在改一下才会符合楼主的题目要求...
不过我只是先举个例...


[ 此文章被gamewalk在2007-06-14 00:11重新编辑 ]


献花 x0 回到顶端 [9 楼] From:台湾永大数位动力公司 | Posted:2007-06-13 23:53 |

<<   1   2  下页 >>(共 2 页)
首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.172187 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言