合格的字符串

原创 2016年06月01日 14:34:44


总时间限制: 
1000ms 
内存限制: 
65535kB
描述

     老师给小学生门布置了一些作业,让它们按照一个模版写一些字符串交上来,

同学们把作业交上来了,问题来了,这么多的作业老师批改不过来,现在请你帮老师

写一个程序,帮助老师确定各个字符串是否合格。

    首先老师有一个匹配模版,比如是“aa[123]bb”这一个字符串,同学们交的各种

作业字符串如aa1bb、aa2bb、aa3bb都算是正确匹配看,而aacbb就是错误的字符串。

(即待查字符串对应于模版方括号内的部分,应该为方括号内字符串的一个子字符)。

    我们需要做的就是按照模版,找出正确的字符串和所在的行。

输入
输入的第一行为一个整数n,表示有多少个学生的作业,即有多少行需要检查的字符串。(1<=n<=50)
中间为n行字符串,代表着n个学生们写的作业。每个字符串长度小于50。
最后一行为1行字符串,代表着老师给的匹配模板。
输出
输出合格的字符串的行号和该字符串。(中间以空格隔开)
样例输入
4
Aab
a2B
ab
ABB
a[a2b]b
样例输出
1 Aab
2 a2B
4 ABB

#include<stdio.h>
#include<string.h>
int change(char a,char b){
	if(a>='a'&&a<='z'&&(a==b||a!=b&&a-32==b)){
		return 1;
	} 
	if(a>='A'&&a<='Z'&&(a==b||a!=b&&a+32==b)){
		return 1;
	}
	if(a==b){
		return 1;
	}
	return 0;
}
int isvalible(char a[],char b[]){
	int i,j,k=0,t,f1=1,f2=0,f3=1;
	char c[51];
	for(i=0,j=0;b[j]!='[';i++,j++){
		if(!change(a[i],b[j]))
		 f1 = 0;
	}
	if(b[j]=='['){
		j++;
	}
	while(b[j]!=']'){
		c[k++]=b[j++];
	}
	if(b[j]==']'){
		j++;
	}
	if(strlen(a)<strlen(b)-2-(k-1)){
		return 0;
	} 
	for(t=0;t<k;t++){
		if(change(a[i],c[t])){
	        f2 = 1;
		}
	}
	for(i++;i<strlen(a)&&j<strlen(b);i++<j++){
		if(!change(a[i],b[j])){
			f3=0;
		}
	}
	if(f1&&f2&&f3){
		return 1 ;
	}
	return 0;
}
int main(){
	char a[50][51];
	char pattern[51];
	int t,i=0,k;
	scanf("%d",&t);
	while(t--){
		scanf("%s",a[i++]); 
	} 
	scanf("%s",pattern);
	for(k=0;k<i;k++){
		if(isvalible(a[k],pattern)){
			printf("%d %s\n",k+1,a[k]); 
		}
    }
	return 0; 
} 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Js处理JSON字符串+一般处理程序

Jquery处理JSON===== var  opts= {"typeid":"sub","steps":[{"id":"481626","member":"u_12333"}]};    ...
  • u014424282
  • u014424282
  • 2017年01月11日 10:44
  • 283

如何才能称之为一个合格的Web开发人员

(本文内容整理自百度贴吧,作者不详。希望每位已经进来的coder可以耐心看完,如果你阅读的收获不及浪费的时间,欢迎吐槽。) 程序员可以分为很多种,像Unix程序员、Windows程序员,或是C++程...
  • LonelyRoamer
  • LonelyRoamer
  • 2012年03月16日 22:30
  • 2909

来测测你是不是一个合格的前端工程师

由于前端技术纷繁杂乱难以考核,为避免一叶障目,遂以此技术列表不拘一格降人才。 请客观地选择对应你当前知识&经验水平的选项,累加得分,如若得分超过100(最高可得分213+), 那你就是合格的前端工程师...
  • WK313753744
  • WK313753744
  • 2015年11月11日 09:25
  • 1187

怎样做一个合格的研究生

1. 如果平时几乎没看过英文原文,读不懂怎么办?     其实我以前也根本没读过原文,也看不懂。这儿有个好办法:找一本中文经典的书籍,仅看某一节你感兴趣或与你相关的内容,然后先找一两篇英文的综述...
  • shuiyuezhou
  • shuiyuezhou
  • 2014年10月17日 10:35
  • 323

做一个合格的程序员需要具备哪些素质?

 程序员是一种技术工作.在IT的发展中有相当重要的地位.从底层硬件通讯协议的建立. 到数据传输层的处理.到操作系统的建设.到数据库平台的建设.一直到应用层上各种数 据营销平台的搭建.程序员在里面...
  • haoyunyun888
  • haoyunyun888
  • 2016年04月28日 18:12
  • 4591

如何成为一个优秀的研发人员

做一个产品,不可能一个人完成所有的东西,一个产品的开发到发布都是各个角色合作的。产品经理出交互,视觉来切图,开发者进行开发工作,测试做开发的测试,项目经理控制我们的整体进度和流程。 作为一个工程师,...
  • qq_28273051
  • qq_28273051
  • 2017年01月17日 11:16
  • 256

你希望成为一名合格的DBA吗?

2007年06月03日 00:14:00 近年来,我一直在和数据库管理员打交道,并直接面试了很多DBA职位。本文想概括一下IT行业对DBA的要求,以及国内DBA的新资现状。可以肯定地说,做一...
  • softart
  • softart
  • 2007年12月14日 12:53
  • 322

2017年下半年软考合格标准出炉啦

根据人力资源社会保障部办公厅文件(人社厅发[2018]8号),2017年下半年计算机技术与软件专业技术资格(水平)考试各级别各专业各科目合格标准均为45分。 恭喜顺利通过的朋友们!2017年...
  • sunmoon1210
  • sunmoon1210
  • 2018年02月02日 21:30
  • 58

怎样算是一个合格的编辑?

编辑是什么?在做编辑的这两年多的时间里,我时常问自己这个问题。自开始写博客,也将博客的名称定为“编辑空间”。可是说真的,到现在为止,应该说我还未找到答案,或者说没有找到一个确切的答案。近日有闲略读了日...
  • futurelight
  • futurelight
  • 2007年05月17日 17:11
  • 2646

做一个合格的Team Leader -- 基本概念

1.领导和管理   人们乐于被领导;他们不喜欢被管理,不喜欢像牛一样被驱赶或指挥。   管理者强迫人们服从他们的命令,而领导者则会带领他们一起工作。   管理是客观的,没有个人感情因素,它假定被...
  • zhuweisky
  • zhuweisky
  • 2007年03月05日 16:55
  • 584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合格的字符串
举报原因:
原因补充:

(最多只允许输入30个字)