| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3652 人关注过本帖
标题:求助这个程序。。。关于小于和小于等于的问题
只看楼主 加入收藏
zonelight
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-3-11
收藏
 问题点数:0 回复次数:2 
求助这个程序。。。关于小于和小于等于的问题
#include "stdio.h"
alp(char c)
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
    return(1);
    else
    return(0);
}

longest(char str[])
{int i,len=0,length=0,flag=1,point,place;
    for(i=0;i<=strlen(str);i++)
    {
        if(alp(str[i]))
        {if(flag)
            {point=i;
            flag=0;
            }
            else len++;}
        else
        {flag=1;
            if(len>=length)
            {length=len;
                place=point;
                len=0;}
            }
        }
        
        return(place);

}
    
main()
{char line[100];
    int j;
    printf("aaaa \n");
    gets(line);
    printf("aaaaaaa \n");
    for(j=longest(line);alp(line[j]);j++)
    printf("%c",line[j]);
    printf(" \n");
    }
这个程序可以运行。。。。就是输入一个字符串返回其中最长的那个单词。。。。。。。现在我想问的是这段
longest(char str[])
{int i,len=0,length=0,flag=1,point,place;
    for(i=0;i<=strlen(str);i++)
为什么是i<=strlen(str)而不是i<strlen(str)我改成i<strlen(str)输出结果就不正确了。。。。。比如输入i am a student。。。如果是<=能输出student。。。但是如果换成<就输出不正确的am。。。。。。。
搜索更多相关主题的帖子: flag len str alp 
2008-03-12 21:59
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
str(strlen(str))就是最后的那个\0,无所谓的。因为它必须要统计到一个单词的结尾才能判定,所以需要判到结尾的\0。否则你就需要让字符串多一个非英文字母的分隔字符。比如你输入“i am a student ",这样也可以得出student的结果。
上面的算法就是那个经典的“最大子串和”问题。
直接写出来的算法的时间复杂度是O(n^3),可以保存一些统计结果,以改进为O(n^2),使用分治法可以达到O(n logn),最佳算法是基于动态规划的算法(即上面的代码),时间复杂度是O(n)。有关这个问题,可以参考算法书。在《编程珠玑》一书中有对这个问题的介绍。这个一维问题还可以推广到多维,将更复杂一些。

[[it] 本帖最后由 hoodlum1980 于 2008-3-13 09:17 编辑 [/it]]
2008-03-13 01:36
zonelight
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-3-11
收藏
得分:0 
[bo]以下是引用 [un]hoodlum1980[/un] 在 2008-3-13 01:36 的发言:[/bo]

str(strlen(str))就是最后的那个\0,无所谓的。因为它必须要统计到一个单词的结尾才能判定,所以需要判到结尾的\0。否则你就需要让字符串多一个非英文字母的分隔字符。比如你输入“i am a student ",这样也可以得出studen ...

明白了。。。。。。感谢。。。。
2008-03-13 18:12
快速回复:求助这个程序。。。关于小于和小于等于的问题
数据加载中...
 
   



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

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