| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2127 人关注过本帖, 2 人收藏
标题:【求助+散分】ACM题 超级病毒
只看楼主 加入收藏
晓云林
Rank: 2
等 级:论坛游民
帖 子:46
专家分:35
注 册:2011-8-29
收藏
得分:5 
回复 2楼 embed_xuel
请教为啥用全局变量就好了啊?
2011-09-21 17:24
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
全局变量在堆中分配内存,局部变量在栈中分配内存。

重剑无锋,大巧不工
2011-09-21 17:56
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 9楼 laznrbfe
呵呵,你想多了

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-09-21 18:04
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 11楼 晓云林
反正就是这么规定的呗,虽然我觉得没什么必要

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-09-21 18:05
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 13楼 beyondyf
原来是这样,谢谢了。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-09-21 18:06
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
程序代码:
#include<stdio.h>
#include<string.h>
char a[1000001];
char b[10001];
int main()
{
    int n,i,j,next[20001],lena,lenb,cont;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",b);
        scanf("%s",a);
        lena=strlen(a);
        lenb=strlen(b);
        next[0]=-1;
        next[1]=0;
        for(i = 2;i<=lenb;i++)
        {
            if(b[next[i-1]] == b[i-1])
                next[i] = next[i-1]+1;
            else
                next[i] = 0;
        }
        i=0;
        j=0;
        cont=0;
        while(i<lena)
        {
            if(-1 == j || a[i] == b[j])
            {
                i++;j++;
                if(j==lenb)
                {
                    cont++;
                    i-=next[lenb];
                    j = 0;
                }
            }
            else
                j = next[j];
        }
        printf("%d\n",cont);
    }
    return 0;
}
kmp算法  效率已经很高了 这里感谢草狼兄弟的教导

[ 本帖最后由 laoyang103 于 2011-9-21 21:04 编辑 ]

                                         
===========深入<----------------->浅出============
2011-09-21 21:02
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:5 
以下是引用beyondyf在2011-9-21 17:56:13的发言:

全局变量在堆中分配内存,局部变量在栈中分配内存。


...呵呵,

我就是真命天子,顺我者生,逆我者死!
2011-09-21 22:29
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
准确的说应该是在DS区 进程的数据段

                                         
===========深入<----------------->浅出============
2011-09-21 22:31
饭桶
Rank: 6Rank: 6
等 级:侠之大者
帖 子:165
专家分:422
注 册:2011-4-5
收藏
得分:5 
回复 17楼 laoyang103
高手啊!我看了很长时间才看懂啊,,我笨啊!

人得一生得奋斗!
2011-09-21 22:47
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这算是理解上差异吧,不管是静态数据还是动态申请的内存都是以DS为基址来询址的,我统称为堆。而局部变量是用过ESP压入栈,以栈为基址通过在栈内的偏移量来询址的,称为栈。不知道你们提交的语言是什么,这个题我也做过,我用的全是局部变量,用GCC提交,AC。

重剑无锋,大巧不工
2011-09-21 22:50
快速回复:【求助+散分】ACM题 超级病毒
数据加载中...
 
   



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

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