算法提高 拼图

人群密度分析算法调研 概述 人群行为分析算法分为四个主要方向: 1、行人检测(Pedestrian Detection) 2、人群计数(Crowd Counting) 3、人群密度分析(Crowd Density Estimation) 4、人群状态分析(Crowd Behaviour Analysis) 人群计数与人群密度分析为其中重要的组成内容。人群计数与人群密度分析算法通常的方法大致可以分为三种: 阅读详情

资源限制
时间限制:3.0s 内存限制:256.0MB
问题描述
  给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满,请问总共有多少种拼法。其中,方格图的每一个方格正好能放积木中的一块。积木可以任意旋转。
输入格式
  输入的第一行包含两个整数n, m,表示方格图的大小。
输出格式
  输出一行,表示可以放的方案数,由于方案数可能很多,所以请输出方案数除以1,000,000,007的余数。
样例输入
6 2
样例输出
4

import java.util.Scanner;

public class Main {
	
  private static long n,m;
  private static final int MOD=1000000007;
  private static int ans[][]=new int[1<<7][1<<7];
  private static int status[][]=new int[1<<7][1<<7];
  
  private static void jiSuan(int a[][],int b[][]) {
	  long t[][]=new long[1<<7][1<<7];
	  
	  for(int i=0;i<a.length;i++) {
		  for(int j=0;j<a[i].length;j++) {
			  for(int k=0;k<a[i].length;k++) {
				  t[i][j]=(t[i][j]+(long)a[i][k]*(long)b[k][j])%MOD;
			  }
		  }
	  }
	  
	  for(int i=0;i<a.length;i++) {
		  for(int j=0;j<a[i].length;j++) {
			  a[i][j]=(int)t[i][j];
		  }
	  }
	  
  }
  
  private static int put(int M,int col1,int col2) {
	  M=M|(1<<col1);
	  
	  if(col2>0) {
		  M=M|(1<<col2);
	  }
	  
	  return M;
  }
  
  private static boolean check(int M,int colum) {
	  if(colum>=0&&colum<m&&(M&(1<<colum))==0) {
		  return true;
	  }
	  
	  return false;
  }
  
  private static void search(int M1,int M2,int M3,int colum) {
	  if(M2==(1<<m)-1) {
		  status[M1][M3]++;
		  return;
	  }
	  
	  if(!check(M2,colum)) {
		  search(M1,M2,M3,colum+1);
	  }
	  else {
		  if(check(M2,colum+1)&&check(M3,colum+1)) {
			  search(M1,put(M2,colum,colum+1),put(M3,colum+1,-1),colum+2);
		  }
		  
		  if(check(M2,colum+1)&&check(M3,colum)) {
			  search(M1,put(M2,colum,colum+1),put(M3,colum,-1),colum+2);
		  }
		  
		  if(check(M2,colum)&&check(M3,colum-1)) {
			  search(M1,put(M2,colum,-1),put(M3,colum-1,colum),colum+1);
		  }
		  
		  if(check(M2,colum)&&check(M3,colum+1)) {
			  search(M1,put(M2,colum,-1),put(M3,colum,colum+1),colum+1);
		  }
		  
	  }
  }
  
  public static void main(String[] args) {
	  Scanner sc=new Scanner(System.in);
	  Main main=new Main();
	  n=sc.nextLong();
	  m=sc.nextLong();
	  
	  for(int M=0;M<(1<<m);M++) {
		  main.search(M,M,0,0);
	  }
	  
	  for(int i=0;i<7;i++) {
		  for(int j=0;j<7;j++) {
			  if(i==j) {
				  ans[i][j]=1;
			  }
			  else {
				  ans[i][j]=0;
			  }
			  
		  }
	  }
	  
	  long temp=n;
	  while(temp>0) {
		  if((temp&1)!=0) {
			  main.jiSuan(ans,status);
		  }
		  
		  main.jiSuan(status,status);
		  
		  temp>>=1;
	  }
	  
	  System.out.println(ans[0][0]);
	  
  }
}
A Puzzle A Day ANT PUZZLE 日历拼图 Python解 这是一个用Python编写的日历拼图求解程序,主要用来解决以下问题:给定8块不规则形状的拼图,在一个7x7的网格中拼出所有可能的日期组合。程序需要确保每次拼图都恰好留出两个空格,分别代表月份(1-12)和日期(1-31,根据月份不同天数不同)。 程序的核心算法采用深度优先搜索(DFS),通过不断尝试不同的拼图放置位置、旋转角度和翻转方式来寻找所有可能的解。为了提高运行效率,程序使用了多进程并行计算,同时利用NumPy进行矩阵运算,大大提升了计算速度。 此外,程序还包含了一些实用的功能,比如解的查重、结果 阅读详情

相关推荐

FOC:【1】浅析SVPWM算法(七段式)以及MATLAB仿真验证

最近的科研项目需要使用到SVPWM算法,网上相关的原理介绍很多。对于纯应用的需求来说,或许有些内容上的冗余。 本文的目的就是简要并且明确的给出具体的计算步骤,可以帮助快速上手。同时利用MATLAB进行了简单算法验证。.....................

Alex的技术博客 1万+

CCF2014年9月试题5 搭积木问题

试题信息: 限制和要求: 限制于要求 信息 时间限制: 3.0s 内存限制: 256.0MB 问题描述:   给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满,请问总共有多少种拼法。其中,方格图的每一个方格正好能放积木中的一块。积木可以任意旋转。 输入格式   输入的第一行包含两个整数n, m

NEWPLAN的专栏 1万+

AppStore逆向分析:从网络抓包到自动化模拟的完整实践

在移动应用生态中,理解客户端与服务器之间的通信协议是进行自动化测试、数据分析和系统集成的关键技术基础。通过分析网络请求与响应,可以深入理解认证、会话管理和数据交换的原理,这对于构建稳定的自动化流程至关重要。其技术价值在于能够实现合法场景下的流程模拟,例如应用元数据监控、沙盒环境测试或内部工具开发。在实际应用场景中,开发者常需处理登录态维持、请求签名验证及风控策略应对等挑战。本文聚焦于AppStore这一封闭生态,详细拆解了其登录、查询等核心环节的通信机制,并探讨了使用Python结合抓包工具进行安全逆向分析

weixin_42524171的博客 933

吃吃饭

试题编号: 201409-5 试题名称: 拼图 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述   给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满,请问总共有多少种拼法。其中,方格图的每一个方格正好能放积木中的一块。积木可以任意旋转。 输入格式

枝寒不栖 789

1.2 重叠因子:双重指数移动平均(Double Exponential Moving Average, DEMA)概念与Python实战

双重指数移动平均(Double Exponential Moving Average, DEMA)是一种改进的移动平均线指标,由Patrick Mulloy在1994年开发。相比传统的指数移动平均线(EMA),DEMA通过减少滞后性来提供更快的市场反应。它通过两次计算EMA并进行特殊组合来实现这一目标,可以在保持平滑性的同时减少滞后。

Kewin的博客 2171

abaqus 6.13安装(ubuntu 16.04LTS)

1。从iso将文件拷贝出来 2。chmod 777 -R ./* 给文件权限 3。sudo /home/xx/A/setup 4。安装licenseserver 5。拷贝lic,log文件 6。打开license sudo ./lmgrd -c path 7. 27011@xx or 27011@localhost ...

a1099313374的博客 1951

正方形积木

Description zyf有一堆的1x1x1的正方体积木,他在一个n*m的网格的每个格子上随便堆积了若干个积木。如图所示: 1 2 3 4 0 5 7 0 0 1 1 0 2 1 0 1 4*4的网格上,每个网格位置上的数字表示这个位置有多少个网格堆积,求这些积木裸露在外面的面积。 Input 输入数据的第一行有一个整数T,表示有T组测试数据。

scwMason的博客 1368

汽车底盘技术解析:从悬架调校到智能化,如何评价国产车底盘实力

汽车底盘作为决定车辆驾驶质感、安全性和耐久性的核心系统,其技术内涵远不止于悬架结构。从行驶系、转向系到制动系的协同工作,底盘调校是一门融合机械原理与工程实践的艺术。在电动化与智能化浪潮下,底盘技术正经历从被动适应到主动响应的变革,CDC可变阻尼减震器和空气悬架等技术的应用,让底盘具备了通过OTA升级实现性能优化的可能。国产汽车品牌如奇瑞、吉利等,通过平台化架构研发与调校经验积累,正推动底盘技术从“能用”向“好用”乃至“塑造独特驾驶风格”迈进。理解底盘技术,需超越简单的结构对比,关注其在实际路况中的滤震性、支

weixin_34413103的博客 387

CSP 201409-5 拼图问题(给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中......)

CSP 201409-5 拼图问题 一、题目信息第一次写博客,有什么疏漏之处,欢迎各位大佬支出&amp;amp;amp;lt;(* ̄▽ ̄*)/ 题目要求 试题编号 201409-5 试题名称 拼图 时间限制 3.0s 试题名称 256.0MB 题目描述 &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&am

阡陌红尘的博客 4890

C#客户端对接工厂MES的方法

本文介绍了使用C#实现WebApi客户端与工厂MES系统交互的方法。主要包括四个步骤:1)配置工控机IP地址;2)获取服务器URL;3)创建HttpHelper帮助类实现单例模式HttpClient,提供异步POST请求方法;4)通过实例化帮助类实现设备状态数据的JSON格式发送与接收。该方案采用异步通信方式,支持超时处理,能够满足大多数MES系统交互需求,帮助工程师快速完成设备与MES系统的数据对接。文中给出了核心代码片段和完整的数据交互流程示例。

weixin_39832501的博客 267

教你如何阅读Autosar代码(6):常量变量定义

编译器抽象应该为常量的声明和定义定义CONST宏。编译器抽象应该定义VAR宏来声明和定义变量。memclass:常量本身的分类;memclass:变量本身的分类;vartype:变量的类型;type:常量的类型;

wdconan001的博客 958

CCF201409-5 拼图(30分)

试题编号: 201409-5 试题名称: 拼图 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述   给出一个n×m的方格图,现在要用如下L型的积木拼到这个图中,使得方格图正好被拼满,请问总共有多少种拼法。其中,方格图的每一个方格正好能放积木中的一块。积木可以任意旋转。 输入格式

海岛Blog 4535

手把手完整实现STM32+LORA组网网关+机智云平台+手机APP应用———第一节- 一主多从的LORA本地组网通信-实现从机采集温湿度与主机显示数据

本教程为《手把手实现STM32+LORA组网网关+机智云平台+手机APP应用》第一节。实现一个主机,两个从机的LORA组网通信。两个从机采集温湿度数据并通过LORA传输数据到主机,然后主机接收到两个从机数据后进行数据显示,本节通过PC串口助手显示两个从机的数据。 下一节将其主机接收的数据通过WIFI网关(ESP8266)传到机智云平台与手机APP。 本文讲解一主多从的LORA本地组网通信,串口助手进行数据展示。使用硬件主要包括:STM32F103C8T6最小系统板(3个)、正点原子LORA模块ATK-L

嵌入式阿齐Archie 1万+

android怎实现拼图功能,基于Android的趣味拼图的实现

陆毅军 黄俊 彭巧珍【摘要】本文基于Android操作系统,根据软件工程的设计思想,以Androidstudio等为开发工具,设计出一款能够开发青少年智力并对其进行海洋生物知识科普的拼图游戏。本游戏包括游戏设置界面,海洋生物图片导读及选择页面,并能显示玩家的当前游戏所用时间和步数。本软件以培养兴趣及科普知识为主。【关键词】Android 拼图游戏 知识科普一、引言目前随着智能手机的全面深...

weixin_39542477的博客 1227

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

滑动拼图 Sliding Puzzle

2018-09-09 22:01:02 问题描述: 问题求解: 问题很Interesting,其实本质就是解空间遍历,使用BFS就可以很快的予以解决~ public int slidingPuzzle(int[][] board) { String goal = "123450"; String start = ""; ...

aitie1479的博客 422

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

python如何提高性能_python – 如何提高这段代码的性能?

感谢在这里的人的一些帮助,我能够得到我的代码为塔斯马尼亚骆驼拼图工作。但是,它是可怕的慢(我想,我不知道,因为这是我的第一个程序在python)。在代码底部运行的示例需要很长时间才能在我的机器中解决:dumrat@dumrat:~/programming/python$ time python camels.py[['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F',...

weixin_39580042的博客 69

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

用java 编写滑动拼图问题_java-解决滑动拼图难题时的A *算法执行时间很长

尝试运行24个Tile拼图及以上版本的代码时,代码执行时间很长(大于3分钟)(对于8 Tile Puzzle而言,运行速度非常快).该代码可以在下面找到.while (openQueue.isEmpty() == false) {State queueHead = openQueue.remove();openMap.remove(queueHead.hashCode());closedMap.p...

weixin_42348021的博客 353

基于A*算法的滑动拼图mathematica实现

相比网站上的例子,本程序采用逆序数定理保证每一个初始情况都能被还原,也增加了通常模式下支持自己图片导入游戏的模式,更是增加了一个挑战模式,增加了A*算法寻找最优解的函数和功能,能够得到目前初始条件下的达到最优解的步数。按照最小差值的状态移动之后,再次生成其所对应的可能后续状态(不包含前一步状态),再次计算与目标状态的差值,执行下一步移动,如此循环,直到达到目标状态,程序结束。本程序的挑战模式的每块拼图都是隐藏的,在点击下才会显示,每次只会同时显示一张图片,所以增加了相应的还原难度。

320科技工作室 472

java 解决3 3拼图_java-解决滑动拼图难题时的A *算法执行时间很长

尝试运行24个Tile拼图及以上版本的代码时,代码执行时间很长(大于3分钟)(对于8 Tile Puzzle而言,运行速度非常快).该代码可以在下面找到.while (openQueue.isEmpty() == false) {State queueHead = openQueue.remove();openMap.remove(queueHead.hashCode());closedMap.p...

weixin_39837041的博客 308

android拼图游戏报告,拼图游戏报告分析报告.doc

南京邮电大学计算机学院2014/2015学年第1学期《JAVA语言》课程报告课题代号(单选)□课题1 □课题2 □课题3课题名称: 拼图游戏小组成员人数(单选)□1人 □2人 □3人 □4人小组成员名单(学号和姓名):(1)学号 姓名(2)学号 姓名(3...

weixin_27374911的博客 801

js版九宫格拼图与启发式搜索(A*算法)

  九宫格拼图游戏大家都很熟悉,这里给大家如介绍何应用状态空间搜索的方式求解拼图的最佳路径和一个游戏dome及自动求解方法;本文分web版游戏的实现和启发式搜索算法两部分;先看dome,直接鼠标点击要移动的方块开始游戏,点击 提示 开始最佳路径搜索(启发式)直到最后一步;(如果提示无解,则表示没有找到最佳路点击重置重新试一次,可通过console查看全部搜索的每一步节点状态,或在js/main.j...

weixin_34310127的博客 1419

java编写九宫格拼图游戏_基于jquery实现九宫格拼图小游戏

九宫格拼图小游戏是小时候比较常见的小游戏之一。闲着无聊就用js简单写了一个。游戏的玩法很简单。九宫格中有八个小图片。随机打乱之后,将八张小图片拼接成一个完整的图。html代码body{border: 0;}.out{width: 606px;height: 606px;margin: 0 auto;border: 1px solid black;}.in{width: 200px;height: ...

weixin_42314680的博客 803

java 生成一组不重复的随机数

引出这个问题的是,是我在学习设计拼图游戏中出现的,拼图游戏开始的时候,图是散乱的,比如拼图游戏被分成了8*4 共32块,那么32块图对应着32个数,而若要使每次开始前的排列顺序不一致,就需要产生32个随机数。看过别人的方法,大郅的思想是0到32之间产生32个不同的随机数,所以创建了一个长度为32的Boolean数组用于存放产生的数字是否已经出现过,如果出现过,while循环会一直继续下去直到产生一

nufangn的博客 3653

[算法分析与设计]拼图问题或八数码问题(搜索算法)

[问题分析]: 拼图游戏实际上是八数码问题的小变形或者说其实就是八数码问题,针对八数码问题我们有三种搜索算法,分别是宽度优先搜索算法,深度优先搜索算法,启发式搜索算法A*。在解决路径类问题(即在一个二维网格中,求从某一点移动到另外一点的最短路径)中,他们大体的思路都是一致的: 我们创建OPEN表放置待访问的结点,CLOSE表放置已经访问过的结点。 从初始结点开始,将初始节点的上下左右四个节点放入OPEN表,然后将初始结点放入CLOSE表,然后从OPEN表中取出一个节点,将其上下左右四个...

qq_57737139的博客 2691

HOJ 1175 连连看

深搜+剪枝 剪枝:转折点小于等于二、越界、两拼图相同且不重合、选择不能为空 #include<iostream> #include<cstring> using namespace std; const int MAXN = 1005; int a[MAXN][MAXN], n, m, x_, y_; //a为拼图,n为行数,m为列数,(x_, y_)为每一次选择的后一个点...

qq_44724908的博客 161

NOIP2017提高组模拟赛 7(总结)

NOIP2017提高组模拟赛 7(总结) 第一题 斯诺克 考虑这样一个斯诺克球台,它只有四个袋口,分别在四个角上(如下图所示)。我们把所有桌子边界上的整数点作为击球点(除了4个袋口),在每个击球点我们可以以45度角击球。 每一个击球点你都可以向两个方向击球,例如像下图所示.   从S点击球有两种路线。提供桌子的尺寸,你的任务是计算出有多少种不同的击球方式使得球能入袋。球可视为质点...

weixin_30832351的博客 151
上一篇: 字符串匹配
下一篇: 算法提高 菱形
闵奈
博客等级 码龄7年 0粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值