zzulioj 1826: 伟大先知的教导 (字符串)

1826: 伟大先知的教导

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 17   Solved: 0

Submit Status Web Board

Description

编写一个c/c++程序的过程大致如下:

1. 在文本编辑器中编辑(edit)代码,得到.c/.cpp的源文件

2. 将上步得到的文件通过编译器编译(compile)获得源代码,之后与所需的库代码链接(link)起来得到.exe的可执行文件

3. 运行(run)上步得到的可执行文件,查看运行结果

4. 如果运行过程中出现错误或未知中断,可能需要用调试器进行调试(debug),直到获得正确结果

 

那么现在我们来考虑在Windows或者Linunx环境下的情况,每一步我们可以选用不同的软件来完成任务。比较知名的文本编辑器有Vim(编辑器之神)、Emacs(神之编辑器)、sublime text 2/3(史上最优雅的编辑器)、Geany(我编不下去)等等,编译器和调试器可以选用MinGW中集成的gccg++gdb。当然,也可以采用集成开发环境(IDE,Integrated Development Environment)进行编程,比如Code::BlocksVisual Studio 2013/2015Dev-Cpp等等。

看完上面资料之后,我们可以发现在ACM这种分秒必争的激烈比赛中,采用IDE是一种高速且有效的编程方式。所以,伟大的先知(也是编程鬼才)Zhourist曾经教导过我们“等他们配置好Vim,我早就用Code::Blocks抢到一血了!!!”

 

不幸地是,某些比赛中主办方可能不会提供IDE(众所周知大部分IDE属于商业软件)。我们也可以采用Vim(因为VimLinux中的标配)和MinGW来编写程序。讲了那么多,我们又发现在一个新的环境中,快速寻找到合适的编程软件是多么重要。接下来的问题是如何查看一台电脑的桌面中有没有Code::BlocksVim。并按Output中的描述输出结果

Input

输入第一行为一个数字n,n代表测试数据组数(n<=50)。

之后每组测试数据第一行为一个数字m,m代表桌面中图标的行数(m<=10)。

接下来每一行为一串字符,代表桌面对应行图标,且长度小于1000。字符串中包含一些英文单词,每一个单词代表桌面中的一个软件名(不含扩展名),每一个单词中间用空格隔开,且长度小于50

每一组测试数据代表一台电脑的桌面,你的任务是寻找这个桌面中有没有Code::BlocksVim(严格区分大小写,符号为半角符号),并按要求输出结果。

Output

对于每组数据,按下面描述输出结果。

如果可以找到Code::BlocksVim,请输出“I can find Code::Blocks and Vim!!!”(不包含引号,下同)。

如果只能找到Code::Blocks,请输出“I can find Code::Blocks!!”。

如果只能找到Vim,请输出“I can find Vim!”。

否则,请输出“Are you kidding me?

每两组数据中输出一个空行,没有多余空行。

Sample Input

41Code::Blocks Vim2Code::Blocksvim QQ1Vim1QQ hearthstone

Sample Output

I can find Code::Blocks and Vim!!!
 
I can find Code::Blocks!!
 
I can find Vim!
 
Are you kidding me?
//好坑的一道题,找了一个多小时的错还是没找出来(感觉没错)。。。
 
先贴上WA的代码。。。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[15][1010];
char ss[5000][100];
char a[]={"Code::Blocks"};
char b[]={"Vim"};
int main()
{
	int t,n,i,j,k,kk;
	scanf("%d",&t);
	while(t--)
	{
		memset(ss,'\0',sizeof(ss));
		memset(s,'\0',sizeof(s)); 
		scanf("%d",&n);
		getchar();
		k=0;
		for(i=0;i<n;i++)
			gets(s[i]);
		k=-1;kk=0;
		for(i=0;i<n;i++)
		{
			int l=strlen(s[i]);
			k++;kk=0;
			for(j=0;j<l;j++)
			{
				if(s[i][j]==' '&&s[i][j-1]!=' '&&s[i][j+1]!=' '&&s[i][0]!=' ')
				{
					k++;
					kk=0;
				}
				else
				{
					ss[k][kk++]=s[i][j];
				}
			}
		}
		int aa=0,bb=0;
		for(i=0;i<=k;i++)
		{
			if(ss[i][0]=='C'||ss[i][0]=='V')
			{
				if(strcmp(a,ss[i])==0)
					aa=1;
				if(strcmp(b,ss[i])==0)
					bb=1;
				if(aa&&bb)
					break;
			}
		}
		if(aa&&bb)
			printf("I can find Code::Blocks and Vim! ! !\n");
		else if(aa&&!bb)
			printf("I can find Code::Blocks ! !\n");
		else if(!aa&&bb)
			printf("I can find Vim!\n");
		else
			printf("Are you kidding me?\n");
		printf("\n");
	}
	return 0;
}

你可能感兴趣的:(zzulioj 1826: 伟大先知的教导 (字符串))