Noip

1008: Noip

Time Limit:1000MS    Memory Limit:32768KByte   64 IO Format:%I64d & %I64u
Description
一年一度的noip又开始,选手们比完赛后会在F盘下新建出很多的文件和文件夹。现在我们要根据要求收取其中的文件,请你写个程序帮我们计算一下收到了哪些文件。
Input

第一行一个整数T,表示有T组数据。

每组数据第一行两个整数N M,表示该组数据有N个文件,且收取了M次。

接着N行给出每个文件的绝对路径。

然后M行给出一条收取信息。

每条收取信息格式为

path S

表示收取path文件夹下扩展名为 S 的所有文件。 给出的path都是以\ 结束, S都是以.开头。

0 < T < 20, 0 < N <=100, 0 < M <= 100

所有的文件夹名,文件名,扩展名都由小写字母组成。

Output
对于每条收取信息,按文件输入的顺序输出满足条件的文件。
Sample Input
2
3 2
F:\exp.pas
F:\a\a.cpp
F:\a\a\a.c
F:\ .pas 
F:\a\ .c
3 2
F:\exp.pas
F:\a\a.cpp
F:\a\a\a.c
F:\ .c 
F:\a\ .pas
Sample Output
F:\exp.pas
F:\a\a\a.c
F:\a\a\a.c


#include<stdio.h>
#include<string.h>
struct node{
	char path[10000];
	int len;
}num[2000];
int main()
{
	int n, i, j, t, m;
	char name[10000], filetype[10000];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d %d",&n, &m);
		for(i = 0; i < n; i++)
		{
			scanf("%s",num[i].path);
			num[i].len = strlen(num[i].path);
		}
		while(m--)
		{
			scanf("%s%s",name, filetype);
			for(i = 0; i < n; i++)
			{
				if(!(strstr(num[i].path, name) - num[i].path) && 
				num[i].len - (strstr(num[i].path, filetype) - num[i].path)== strlen(filetype))
					printf("%s\n",num[i].path);
			}
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/u013780740/article/details/40949927