| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1170 人关注过本帖
标题:出个题目,顺便散分!
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:10 
这么多夜猫子啊,大家要学我啊,早睡早起身体好啊啊,占个座,接分咯

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-23 08:03
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:10 
看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-12-23 08:47
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
也写了个,虽然难看点,但也晒晒
程序代码:
#include<stdio.h>
#include<string.h>
#define N 20
void xc(char a[]);
main(){
    char a[N],b[N];
    int i,j,x,y;
    int q=0,n=1;
    printf("请输入字符串:");
    fflush(stdin);
    scanf("%s",a);
    printf("请输入比对字符串:");
    fflush(stdin);
    scanf("%s",b);
    xc(a);
    xc(b);
    j=strlen(a);
    x=strlen(b);
    printf("%s\n%s %d  %d",a,b,j,x);
    for(i=0;i<=j-x;i++){
        n=1;
       for(y=0;y<x;y++)
           if(b[y]!=a[i+y]){n=0;break;}
      if(n==0)continue;
      q++;}
    printf("出现%d次",q);
}

void xc(char a[]){
    int i;//转换函数
    for(i=0;*(a+i)!='\0';i++)
    if(*(a+i)>'A'&&*(a+i)<'Z')
        *(a+i)=*(a+i)+'a'-'A';
}

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-12-23 09:14
h1023417614
Rank: 4
等 级:禁止访问
帖 子:211
专家分:237
注 册:2012-11-30
收藏
得分:10 
2012-12-23 10:02
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
收藏
得分:10 
看了楼主的帖子,我也想说两句。从大学开学到现在,一直守在这个论坛,一直在学习c语言,看了很多大神热心的帮助像我这样初学者,很是感动。只是我一手机党,真心不方便回帖,论坛里的人应该都不大认识,下个学期就带电脑了,希望那个时候能在论坛里混个脸熟。废话不说了,简单说个这道题的想法,手机不方便,只写几行,大家看懂就行
s1[]="asadsfsrerAs";
s2[]="as";
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<len1;i++)
s1[i]=tolower(s1[i]);
for(i=0;i<len2;i++)
s2[i]=tolower(s2[i]);
for(i=0;i<len1-len2;i++)
if(strncmp(s1+i,s2,len2)==0)
count++;

好好学习,天天向上
2012-12-23 10:33
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
哎,我知道自己粗心了,aa  在aaa中出现2次啊
#include<stdio.h>
int str_str(char *p1,char *p2)
{
    int count=0;
    char *q1=p1,*q2=p2;
    while(*q2!='\0')
    {
        if(*q1==*q2||*q1==*q2+32||*q1==*q2-32)
        {
            q1++;q2++;
            if(*q1=='\0')
            {
                q1=p1;
                q2--;
                count++;
            }
        }
        else
        {   
            q1=p1;
            q2++;
        }
    }
    return count;
}
int main()
{
    char *p="aa";
    char *pp="aaaaadbbaa";
    printf("%d\n",str_str(p,pp));
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

小小战士,战士中的战斗机!
2012-12-23 11:58
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
回复 26楼 小小战士
你这个算法的整体思路是错的,所以无法修改它得到正确的程序

比如你这次修改后试试
aaa
aaaa

这组数据,你自己多试几组数据就知道了
2012-12-23 13:35
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
曹兄是想让你们用KMP算法解决
程序代码:
#include <stdio.h>
#include <string.h>
char a[1000001] = {0};
char b[10001] = {0};
int main()
{
    int i,j,k;
    int m,n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s%s",b,a);
        int lena = strlen(a);
        int lenb = strlen(b);
        int next[20001] = {0,1};
        for(i = 2;i<=lenb;i++)
        {
            if(b[next[i-1]-1] == b[i-1])
                next[i] = next[i-1]+1;
            else
                next[i] = 1;
        }
        m = i = j = 0;
        while(i<lena)
        {
            if(-1 == j || a[i] == b[j])
            {
                i++;j++;               
            }
            else
                j = next[j]-1;
            if(j == lenb)
            {
                m++;
            }
        }
        printf("%d\n",m);
    }
    return 0;
}


超级病毒
时间限制:1000 ms  |  内存限制:65536 KB
描述
在ACM训练基地最引人注目的一台计算机是一台具有高度人工智能的超级生物计算机。和其他所有计算机不同,这台计算机拥有和人类一样的DNA结构。由于具有高度的人工智能,各位训练队员们都早已把它当成是训练队里不可缺少的一员。


有一天,它们发现这台计算机生病了……


生病以后,这台计算机变得很虚弱,不和我们打招呼了,也不能帮我们想算法题了。队员们都很难过,他们都想帮帮这位好朋友。


经过仔细的检查,它们发现这台计算机感染了一种病毒。和医学中的病毒一样,这种超级病毒侵入计算机运算单元内的细胞,将其感染。于是,正常细胞中的DNA被病毒更改为新的序列。导致细胞机能的变异。


经过仔细比对,训练队员们已经找到了可疑的病毒特征序列,即,如果细胞的DNA序列中包含这种序列,那么该细胞就很可能被感染。


例如,病毒特征代码为ATAA,则如果DNA序列中如果有ATCATAATCATAC这样一段,则细胞就很可能受到感染。


现在,队员们将为生病计算机进行彻底的检查,他们将给出计算机完整的DNA序列(和生物学中的DNA一样,计算机的DNA序列也可以表示为字母A,T,C,G组成的序列),你的任务是,判定该DNA序列中出现过几次病毒特征序列。


注意:其中病毒特征序列在待测DNA序列中重叠出现必须按多次计算。


例如: AATTAATTAA在AATTAATTAATTAA中出现两次。

输入
输入包括多组测试数据,第一行有一个正整数N表示数据数量。
以下为N组测试数据。
每组测试数据由两行,每一行都是由字母A、T、C、G组成的字符串。第一行为病毒特征代码(长度不超过10000个字符)。第二行为待测DNA序列,此序列长度较长(长度不超过1000000个字符)。


输出
对于每一组测试数据,输出一个整数表示答案,为在待测DNA序列中出现病毒特征代码的次数。

样例输入
1
AATTAATTAA
AATTAATTAATTAA
样例输出
2

http://www.


                                         
===========深入<----------------->浅出============
2012-12-23 17:25
快速回复:出个题目,顺便散分!
数据加载中...
 
   



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

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