hiho 大礼堂地毯(strstr 查找函数)

题目1 : 大礼堂地毯

时间限制: 10000ms
单点时限: 1000ms
内存限制: 256MB

描述

小Hi的学校大礼堂的地毯是由很多块N × M大小的基本地毯拼接而成的。例如由2×3的基本地毯

ABC
ABD

拼接而成的大礼堂整片地毯如下:

       ...       
  ABCABCABCABCAB
  ABDABDABDABDAB
. ABCABCABCABCAB .
. ABDABDABDABDAB .
. ABCABCABCABCAB .
  ABDABDABDABDAB
  ABCABCABCABCAB
       ...

由于大礼堂面积非常大,可以认为整片地毯是由基本地毯无限延伸拼接的。  

现在给出K张地毯的照片,请你判断哪些照片可能是小Hi学校大礼堂地毯的一部分。不需要考虑旋转照片的方向。

例如

BCA
BDA
BCA

可能是上述地毯的一部分,但

BAC
BAD

不可能是上述地毯的一部分。

输入

第1行包含三个整数,NM 和 K。  

第2~N+1行包含一个N × M的矩阵,代表基本地毯的样式。其中每一个元素都是一个大写字母(A-Z)。  

之后是 K 张照片的数据。  

每张照片的第一行包含两个整数,H 和 W,代表照片的大小。  

以下 H 行包含一个 H × W的矩阵,代表照片中地毯的样式。其中每一个元素都是一个大写字母(A-Z)。

对于80%的数据,1 ≤ NM ≤ 10, 1 ≤ HW ≤ 100  

对于100%的数据, 1 ≤ NM ≤ 50, 1 ≤ K ≤ 10, 1 ≤ H ≤ 100, 1 ≤ W ≤ 800。

输出

对于每张照片,输出YES或者NO代表它是否可能是大礼堂地毯的一部分。

样例输入
2 3 3  
ABC  
ABD  
3 3  
BCA  
BDA  
BCA  
2 3  
BAC  
BAD  
7 14  
ABCABCABCABCAB  
ABDABDABDABDAB  
ABCABCABCABCAB  
ABDABDABDABDAB  
ABCABCABCABCAB  
ABDABDABDABDAB  
ABCABCABCABCAB
样例输出
YES
NO
YES




#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<cmath>
#include<string>
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4+10;

char str[55][80000], s[1000], str2[110][810];

int main()
{
    int n, m, k;

    scanf("%d %d %d", &n, &m, &k);
    for(int i=0; i<n; i++)
    {
        scanf("%s",s);
        for(int j=1;j<=800;j++) strcat(str[i],s);
    }
    while(k--)
    {
        int w, h;
        scanf("%d %d", &w, &h);
        for(int i=0;i<w;i++)
        {
            scanf("%s",str2[i]);
        }
        int k1, k2;
        int flag=1;
        for(int i=0;i<n;i++)
        {
            char *p=strstr(str[i],str2[0]);
            if(p)
            {
                k1=p-str[i];
                k2=i;
                flag=0;
                break;
            }

        }
        if(flag)
        {
            puts("NO");
            continue;
        }
        int x=k2,y=k1;
        for(int i=0;i<w;i++)
        {
            y=k1;
            for(int j=0;j<h;j++)
            {
                if(str2[i][j]!=str[x][y])
                {
                    flag=1;
                    break;
                }
                y++;
            }
            x=(x+1)%n;
            if(flag) break;
        }
        if(flag) puts("NO");
        else puts("YES");
    }
    return 0;
}




Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值