| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 938 人关注过本帖
标题:关于编程啦网站的一道练习题~~
只看楼主 加入收藏
lcddhr
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-5-18
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:3 
关于编程啦网站的一道练习题~~
题目的网址是这个  http://www.


我的代码是这个 请问要怎么修改呀?

#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
 char *s1,*s2;
 int num,num_s1,num_s2;
 int i,j,k,flag,N;
 s1=(char *)malloc(sizeof(char)*10000);
 s2=(char *)malloc(sizeof(char)*1000000);
scanf("%d",&N);
while(N--)
{
 getchar();
 gets(s1);
 gets(s2);
 num=0;
 num_s1=strlen(s1);
 num_s2=strlen(s2);

 for(j=0;j<num_s2-num_s1+1;j++)
 {
  flag=1,k=j;
  for(i=0;i<num_s1;i++)
  {
   if(s2[k]!=s1[i])
   {
    flag=0;
    break;
   }
   else
   k++;
  }
   if(flag)
    num++;
 }

 printf("%d\n",num);
 }

return 0;



 }  //提交上去的话通不过~~
搜索更多相关主题的帖子: 网址 练习题 
2011-06-02 18:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
数组开小了。很多ACM的提示(尤其是数据长度方面的)都不准确。
这是我测试用的代码,数组开10000时运行错误,开到30000通过。
你的代码没细看,想来应该是一个数量级的算法。

#include <stdio.h>
#define SAMPLE_SIZE 30000
#define DNA_SIZE    3000000

int Test(char *sample, char *dna)
{
    int c, i, j;
    c = 0;
    for(i = 0; dna[i] != 0; i++)
    {
        for(j = 0; sample[j] != 0; j++)
        {
            if(dna[i + j] == 0 || dna[i + j] != sample[j]) break;
        }
        if(sample[j] == 0) c++;
    }
    return c;
}

int main()
{
    char sp[SAMPLE_SIZE], dp[DNA_SIZE];
    int i, n;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
        scanf("%s", sp);
        scanf("%s", dp);
        printf("%d\n", Test(sp, dp));
    }
    return 0;
}

重剑无锋,大巧不工
2011-06-03 10:11
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
这个“编程啦”什么时候开的?
题库很小,题目描述的也不是很精确,玩的不过瘾。
推荐还是去北大Judge online玩
英文还行的话,acm.timus.ru的题目很有意思,而且还支持C#

重剑无锋,大巧不工
2011-06-03 10:26
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:5 
程序代码:
char a[100],b[100];
int i,j,n,sum=0;
gets(a);
gets(b);
n=strlen(a);
if(n>strlen(b))
printf("0");
else if(strcmp(a,b)==0)
printf("1");
else
{for(i=0;i<=strlen(b)-n;i++)
{for(j=0;j<strlen(a);j++)
if(a[j]!=b[j+i])
break;
if(j>=strlen(a))
sum++;}}
printf("%d",sum);
仅供参考!!!
2011-06-03 10:34
快速回复:关于编程啦网站的一道练习题~~
数据加载中...
 
   



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

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