我是靠谱客的博主 腼腆西牛,最近开发中收集的这篇文章主要介绍求解 nbuoj 1006 Problem G快乐字符串,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

不知道为什么,在codeblocks里输入数据是对的,但是在oj系统里总是有问题。。实在看不出究竟哪里有问题,大佬们能不能帮忙看一下qaq

我的代码和输入输出都在下方,感谢好心人的帮助

(顺便吐槽一下oj,在给期望输出和实际输出的时候能不能给全???)

题目描述

凡是包含有happy作为子串的字符串都被称为快乐的字符串(happy必须连续),给你若干个字符串,你能把所有快乐的字符串都找出来么?

输入要求

第一行输入一个正整数n表示有n个字符串。
接下来输入n行,每行表示一个字符串。(n<=100,每个字符串不超过100)

输出要求

输出所有快乐的字符串,每行一个,按字典序排序。

输入样例

6
sdffhappysdfds
asdfhapfsdpy
dfdhappy
rdfgf
fdsfssd
happy

输出样例

dfdhappy
happy
sdffhappysdfdsw

我的代码如下

#include<stdio.h>
#include<string.h>
int main()
{
    int n,i,j,k,len,p=0,t=0;
    char ch[100][100];//各个字符串
    char se[5]={"appy"};
    char hc[100][100],m[100],tt[100];//hc为筛选出的字符串,m用于排序,为某一次循环中的最小字符串,tt用于交换
    scanf("%d",&n);
    getchar();
    for(i=0;i<n;i++)//同时完成输入和筛选
      {   p=0;
          gets(ch[i]);
          len=strlen(ch[i]);
          for(j=0;j<len;j++)//字符串第一个字符开始搜寻h,如果有则对下面四个字符串搜索
          {
              if(ch[i][j]=='h')
              {
                  for(k=0;k<4;k++)
                  {
                      if(ch[i][j+k+1]==se[k])
                        p++;
                      else
                        break;
                  }
              }
              if(p==4)//找到含有happy的字符串了以后,将筛选出的的ch录入到hc中
              {strcpy(hc[t],ch[i]);t++;break;}
          }
      }
      for(i=0;i<t;i++)//排序部分
      {    strcpy(m,hc[i]);
           for(j=i+1;j<t;j++)
           {
              if(strcmp(m,hc[j])>0)
              {
                  strcpy(tt,m);
                  strcpy(m,hc[j]);
                  strcpy(hc[j],tt);
              }
           }
          strcpy(hc[i],m);
      }
      for(i=0;i<t;i++)//输出
        puts(hc[i]);
}

输入样例里的输入,结果是对的

oj的判定是这样的

最后

以上就是腼腆西牛为你收集整理的求解 nbuoj 1006 Problem G快乐字符串的全部内容,希望文章能够帮你解决求解 nbuoj 1006 Problem G快乐字符串所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部