我是靠谱客的博主 腼腆西牛,这篇文章主要介绍求解 nbuoj 1006 Problem G快乐字符串,现在分享给大家,希望可以做个参考。

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

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

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

题目描述

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

输入要求

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

输出要求

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

输入样例

复制代码
1
2
3
4
5
6
7
6 sdffhappysdfds asdfhapfsdpy dfdhappy rdfgf fdsfssd happy

输出样例

复制代码
1
2
3
dfdhappy happy sdffhappysdfdsw

我的代码如下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#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快乐字符串的全部内容,更多相关求解内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部