| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1331 人关注过本帖
标题:求解,题目没看懂
只看楼主 加入收藏
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:3 
求解,题目没看懂
给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
输入格式
  第一行一个数字L。
  第二行是字符串S。
  L大于0,且不超过S的长度。
输出格式
  一行,题目要求的字符串。

  输入样例1:
  4
  bbaabbaaaaa

  输出样例1:
  bbaa

  输入样例2:
  2
  bbaabbaaaaa

  输出样例2:
  aa     为何输出阳历1不能是bbaaaaa  输出阳历2不能是bba呢
搜索更多相关主题的帖子: 字符串 统计 
2016-02-10 15:40
拉链
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:534
注 册:2016-1-22
收藏
得分:7 
因为题意要求是长度大于等于l的出现次数最多的子串。样例1中bbaa出现两次次数最多,样例2中aa出现了5次,也是出现次数最多的。
2016-02-10 17:01
zmbilx
Rank: 2
等 级:论坛游民
帖 子:22
专家分:80
注 册:2015-7-18
收藏
得分:7 
这几天在做OJ,看见这题,好像我能做,就拿来试试。
仅仅VC下的两个样例通过,过OJ不道行不。
OJ也是刚刚接触
程序代码:
#include <stdio.h>
#include <string.h>

struct Str_temp_def
{
//    char str[1024];
//    char* str;
    char str[512];
    int n;
};

void fun(char from[], int start, int end, char to[])
{
    int i, k;
    i = 0;
    for(k=start; k<=end; k++)
    {
        to[i] = from[k];
        i++;
    }
    to[i] = 0;
}
int main()
{
    int L;
    char str[1024];
    int i, len, j, k, f, a;
    struct Str_temp_def Str_temp[1024];
    k = 0;
    f = 0;
    
    scanf("%d", &L);
    scanf("%s", str);
    len = strlen(str);
    
    for(i=0; i<len; i++)
    {
        j = i+L-1;
        if(j >= len-1)
        {
            i++;
            continue;
        }
        fun(str, i, j, Str_temp[k].str);
        Str_temp[k].n = 0;
        k++;
        j = 0;
    }
    
    for(i=0; i<k; i++)
    {
        for(j=0; j<i; j++)
        {
            if(!strcmp(Str_temp[j].str,Str_temp[i].str))
            {
//                Str_temp[i].n++;
                if(++Str_temp[i].n > f)
                {
                    f = Str_temp[i].n;
                    a = i;
                }
            }
        }
    }
    
    printf("%s\n", Str_temp[a].str);
    return 0;
}

每天OJ一道题,快快乐乐过大年
2016-02-10 20:25
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:336
专家分:1135
注 册:2014-4-13
收藏
得分:7 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1024
char str[N];
char flg[N];
int main()
{
   int i,j,n,maxid,max,temp;
   int mystrcmp(const char*s1,const char*s2,int n);   
   
   while(scanf("%d",&n)!=EOF)
   {
       scanf("%s",str);
       memset(flg,0,N);
       maxid=0;
       max=1;
       i=0;
       while(*(str+i+n-1)!='\0')
       {
          if(flg[i]!=0)
          {
              i++;
              continue;
           }
           
           temp=1;
           j=i+1;
           while(*(str+j+n-1)!='\0')
           {
               if(flg[j]==0 && mystrcmp(str+i,str+j,n)!=0)
               {
                  temp++;
                  flg[j]=1;
               }
               j++;
           }
           if(temp>max)
           {
               max=temp;
               maxid=i;
           }
           i++;
        }
        for(i=0;i<n;i++)  putchar(*(str+maxid+i));
        printf("\n");
      
   }      
   return 0;   
}

int mystrcmp(const char*s1,const char*s2,int n)
{
   int i=0;
   for(;i<n;i++) if(*(s1+i)!=*(s2+i)) return 0;
   return -1;
}


[此贴子已经被作者于2016-2-15 17:47编辑过]

2016-02-15 17:08
快速回复:求解,题目没看懂
数据加载中...
 
   



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

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