湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

多连块拼图

时间限制:
1000 ms  |  内存限制:
65535 KB
难度:
4

描写叙述
    多连块是指由多个等大正方形边与边连接而成的平面连通图形。         ————
 维基百科
 

    给一个大多连块和小多连块,你的任务是推断大多连块能否够由两个这种小多连块拼成。小多连块仅仅能平移,不能旋转或者翻转。两个小多连块不得重叠。左下图是一个合法的拼法,但右边两幅图都非法。中间那幅图的问题在于当中一个小多连块旋转了,而右图更离谱:拼在一起的那两个多连块根本就不是那个给定的小多连块(给定的小多连块画在右下方)。 
湖南省第七届大学生计算机程序设计竞赛 多连块拼图 (模拟)

输入
输入最多包括 20 组測试数据。每组数据第一行为两个整数 n 和 m(1<=m<=n<=10)。下面 n 行描写叙述大多连块,当中每行恰好包括 n 个字符*或者.,当中*表示属于多连块,.表示不属于。下面 m 行为小多连块,格式同大多连块。输入保证是合法的多连块(注意,多连块至少包括一个正方形)。输入结束标志为 n=m=0。
输出
对于每组測试数据,假设能够拼成,输出 1,否则输出 0。
例子输入
4 3 
.**. 
**** 
.**. 
.... 
**. 
.** 
... 
3 3 
*** 
*.* 
*** 
*.. 
*.. 
**. 
4 2 
**** 
.... 
.... 
.... 
*. 
*. 
0 0 
例子输出
1 
0 
0
来源

湖南省第七届大学生计算机程序设计竞赛


这道能够算是一道模拟题吧,利用给出的小多连块,进行平移,去匹配大多连快的内容,看能否匹配成功,这里我们能够採用模拟它进行匹配,记录大,小多连块的第一个‘*’的位置,然后用小连块去进行匹配,就相当于去消除大多连块的‘*’,逐个枚举进行匹配;要学习这样的匹配和枚举的方法;

#include <cstdio>
#include <cstring>
using namespace std;
char map[10][10],s[10][10];
int x1,y1,x2,y2,n,m;
void get_big()//获得大多连块的第一个‘*’位置
{
    bool flag=true;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(s[i][j]=='*')
            {
                x1=i;
                y1=j;
                flag=false;
                break;
            }
        }
         if(!flag) break;
    }
}
void get_small()//获得小多连块的第一个‘*’位置
{
    bool flag=true;
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(map[i][j]=='*')
            {
                x2=i;
                y2=j;
                flag=false;
                break;
            }
        }
        if(!flag) break;
    }
}
bool judge()//推断是否所有匹配
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        if(s[i][j]=='*')
        return false;
    return true;
}
int sovle()//匹配过程
{
    get_small();
    while(!judge())
    {
        get_big();
        for(int i=x2;i<m;i++)
            for(int j=0;j<m;j++)
        {
            if(map[i][j]=='*')
            {
                 if(s[x1+i-x2][y1+j-y2]=='*')//关键就是这里,用小连块的位置去匹配大连块的位置
                        s[x1+i-x2][y1+j-y2]='.';
                else
                    return 0;
            }
        }
    }
    return 1;
}
int main()
{
    int i,j;
    while(scanf("%d%d",&n,&m)&&n&&m)
    {
        for(i=0;i<n;i++)
          scanf("%s",s[i]);
        for(j=0;j<m;j++)
          scanf("%s",map[j]);
        printf("%d\n",sovle());
    }
    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117909.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ctf-web:关于文件上传漏洞的深入研究[通俗易懂]

    ctf-web:关于文件上传漏洞的深入研究[通俗易懂]上次我们研究了关于文件上传的漏洞,这次我们研究的内容属于上节课的补充内容,关于文件上传的绕过与防御.怎么说呢,算是一种锻炼吧.因为下个月有个awd的比赛,因此最近会经常发一些关于web的内容.其实我还是挺慌的,因为以前参加的都是ctf线上赛,而且我做的都是逆向这个方面的,然而这次突然来了个web,搞得我有点懵.web也是最近才开始研究的,所以写的可能不尽人意,希望各位大佬看看就好,不喜勿喷.一.实验环境我们这次的实验依然用的是上次的网站和phpstudy.我发在了下面.1.upload-f.

  • Python 中return用法及意义「建议收藏」

    Python 中return用法及意义「建议收藏」return意义其实说白了,函数就是个你招来的工人。你给他一些材料,告诉他怎么用这些材料拼装,然后他负责把拼装好的成品交给你。材料就是函数的参数,成品是函数的输出,而怎么拼装就是你写的函数体代码了。比如这段代码defworker(a,b,c):x=a+by=x*c这个工人worker在你的指导下,用abc三个材料,装配出了x和y两个成品。但是程…

    2022年10月28日
  • idea搭建vue(使用VUE打开一个项目)

    使用IDEA创建咱们的第一个VUE项目最近在学习VUE,想着使用vscode、hbulider、webstorm这些软件学习,但听前端前辈们说要很多插件什么的等等等!听完咱还是选择IDEA吧,毕竟和IDEA还是很亲近的!1.安装环境–让VUE‘顺产’(1)安装node.js至于为什么安装大家可以看看前辈们的博客哦!1.先让IDAE准备准备(迎接VUE)~~~提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环

  • jar包下载网站「建议收藏」

    jar包下载网站「建议收藏」1.这里可以查询POM信息和JAR包下载https://www.kumapai.com/open/query/?querytype=title&querykey=cglib1.https

  • java linkedhashset_Java LinkedHashSet「建议收藏」

    java linkedhashset_Java LinkedHashSet「建议收藏」JavaLinkedHashSet1什么是JavaLinkedHashSetJavaLinkedHashSet类实现了Set接口。并且HashSet的子类。关于JavaLinkedHashSet类的核心要点是:JavaLinkedHashSet类不能存储重复元素,和HashSet相似。JavaLinkedHashSet类提供所有Set接口的操作,并允许空元素。JavaLinkedH…

    2022年10月12日
  • Android DeepLink介绍与使用

    Android DeepLink介绍与使用前段时间公司让调研一下DeepLink,说以后会用到,之前看了很久,并做了个demo,现整理一下,方便以后查阅,如果有幸帮助到其他人就更好了。基本概念DeepLink,又叫deeplinking,中文翻译作深层链接。简单地从用户体验来讲,DeepLink,就是可以让你在手机的浏览器/GoogleSearch上点击搜索的结果,便能直接跳转到已安装的应用中的某一个页面的技术。对于不…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号