放积木

2024-06-04 02:08
文章标签 积木

本文主要是介绍放积木,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Description

现有一个n*m的矩阵方格和1*2、2*1两种积木。矩阵中有些格子是不能放积木的,摆放的积木是不能互相重合的,当然,积木也不能放到矩阵外面。问,这个矩阵,最多能放多少积木?

Input

多组输入,每组第一行有两个整数n、m,表示矩阵有n行,m列。(1<=n,m<=10)
接下来,会有n行字符串,每行有m个字符。字符只会是‘.’ 或‘*’, ‘*’表示这个格子不能放积木,‘.’表示这个格子可以放积木。

Output

每组输出一行,这行包含一个数字,表示这个矩阵最多放的积木数量。

Sample Input

5 2
.*
..
.*
..
*.

Sample Output

3
 
代码如下:
 

#include <cstdio>

#include <cstring>

#include <cmath>

#include <cstdlib>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <vector>

#include <queue>

#include <map>

#include <set>

#include <string>

#define OUT(x) cout << #x << ": " << (x) << endl

using namespace std;

const int mmax=200;

const int inf=0x3fffffff;

bool G[mmax][mmax];

char tt[mmax][mmax];

int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};

bool vis[mmax];

int link[mmax];

int n,m;

bool find(int x)

{

    for(int i=1;i<=n*m;i++)

    {

        if(G[x][i] && !vis[i])

        {

            vis[i]=true;

            if(link[i]==0  ||  find(link[i]))

            {

                link[i]=x;

                return true;

            }

        }

    }

    return false;

}

  

int main()

{

    while(scanf("%d %d",&n,&m)!=EOF)

    {

        memset(G,false,sizeof G);

        for(int i=0;i<n;i++)

            scanf("%s",tt[i]);

        for(int i=0;i<n;i++)

        {

            for(int j=0;j<m;j++)

            {

                if(tt[i][j]=='.')

                    for(int e=0;e<4;e++)

                    {

                        int ni=i+dir[e][0];

                        int nj=j+dir[e][1];

                        if(ni>=0 && ni<n && nj>=0 && nj<m && tt[ni][nj]=='.')

                            G[i*m+j+1][ni*m+nj+1]=1;

                     }

            }

        }

        int cnt=0;

        memset(link,0,sizeof link);

        for(int i=0;i<=n*m;i++)

        {

            memset(vis,false,sizeof vis);

            if(find(i))

                cnt++;

        }

        printf("%d\n",cnt/2);

    }

    return 0;

}

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

这篇关于放积木的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028765

相关文章

荣获最佳展示奖,积木易搭第十届“博博会”有哪些亮点?

8月23-26日,第十届“博博会”在内蒙古自治区呼和浩特市敕勒川草原举办,这是亚洲最大的博物馆专业展会,更是全球三大博物馆行业展会之一。 本次展会,积木易搭携文博数字化硬件及智慧文博数字化解决方案出席,并荣获组委会颁发的最佳展示奖——铜奖。 一、数字化技术赋能,让文物“活起来” 数字化已经是文博行业的整体趋势,我们可以在博物馆看到越来越多触摸屏、增强现实(AR)、虚拟现实(V

JeecgBoot积木报表AviatorScript表达式注入漏洞复现

文章目录 漏洞信息漏洞复现环境搭建poc复现DNSLog验证 漏洞信息 影响组件:JimuReport积木报表 影响版本:v1.6.0 < JimuReport ≤ 1.7.8 漏洞名称:AviatorScript表达式注入漏洞 漏洞链接:积木报表软件存在AviatorScript代码注入RCE漏洞 · Issue #2848 漏洞描述: 积木报表软件存在Aviat

HVV前沿 | 积木报表组件(Jeecg-Boot)权限绕过漏洞分析

漏洞概述 JeecgBoot是适用于企业 Web 应用程序的国产Java低代码平台。 近期,网宿安全演武实验室监测到JeecgBoot JimuReport 1.7.8版本及之前版本存在安全漏洞(网宿评分:高危):该漏洞源于权限设置不安全,攻击者在请求中添加特定参数,即可绕过授权机制,从而查看敏感信息并通过 Aviator 表达式注入在1.6.0版本后实现远程代码执行。 目前该漏洞POC状态

摆积木

题目描述 小明很喜欢玩积木。一天,他把许多积木块组成了好多高度不同的堆,每一堆都是一个摞一个的形式。然而此时,他又想把这些积木堆变成高度相同的。但是他很懒,他想移动最少的积木块来实现这一目标,你能帮助他吗? 输入格式 输入包含多组测试样例。每组测试样例包含一个正整数n,表示小明已经堆好的积木堆的个数。 接着下一行是n个正整数,表示每一个积木堆的高度h,每块积木高度为

springboot集成积木报表,怎么将平台用户信息传递到积木报表

springboot集成积木报表后怎么将平台用户信息传递到积木报表 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选新的模块 起因是因为需要研究在积木报表做数据筛选的时候需要拿到系统当前登录用户信息做筛选 官网有详细介绍怎么集成进去的:按照这个来就好积木报表集成,不在这次的记录范围 新的模块 集成以后肯定是一个单独的模块来结合详细介绍 怎么获

JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。秉承"简单、易用、专业"的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。领先的企业级Web报表,采用纯Web在线技术,专注于解决企业报表快速制作难题。

积木搭建游戏-第13届蓝桥杯省赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第83讲。 积木搭建游戏,本题是2022年4月17日举办的第13届蓝桥杯青少组Python编程省赛真题编程部分第3题,13届一共举办了两次省赛,这是第一次省赛。题目要求编程帮助小青找出最少需要多少

理解我的积木编程思想

1 学习教程,至少7+1+3+9+手册2 编程实践,遇到实际问题后,在技术资料中查找关键词3 选择适合的条目找到代 码。修正,组合。

JimuReport 积木报表 v1.7.52 版本发布,免费的低代码报表

项目介绍 一款免费的数据可视化报表工具,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。领先的企业级Web报表,采用纯Web在线技术,专注于解决企业报表快速制作难题。

Python | 摆平积木(列表)

包含多组测试数据时就需要使用while True while True:try:n = int(input())if n == 0:breaknums = list(map(int, input().split()))total = sum(nums)average = total // nresult = 0for i in range(n):if nums[i] < average:resu