Time Limit: 1 second

Memory Limit: 50 MB

【问题描述】

给你一个矩阵,其边长均为整数。你想把矩阵切割成总数最少的正方形,其边长也为整数。切割工作由一台切割机器完成,它能沿平行于矩形任一边的方向,从一边开始一直切割到另一边。对得到的矩形再分别进行切割。

【输入】

共1行;
输入文件中包含两个正整数,代表矩形的边长,每边长均在1—100之间。

【输出】

包含1行,输出文件包含一行,显示出你的程序得到的最理想的正方形数目。

【输入样例】

5 6

【输出样例1】

5

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t004

【题意】

【题解】

/*
设f[i][j]表示长为i,宽为j的时候分割成的最小正方形个数;
记忆化搜索;
在搜的时候强制限制一下x>y
//时间复杂度感觉应该是O(n^3)的吧。
dfs(int x,int y)
{
if (x==y)
return 1;
if (x==1||y==1)
return max(x,y);
//竖切
rep1(i,1,x-1)
{
int temp = dfs(i,y)+dfs(x-i,y);
if (temp<f[x][y])
f[x][y] = temp;
}
//横切
rep1(i,1,y-1)
{
int temp = dfs(x,i)+dfs(x,y-i);
if (temp < f[x][y])
f[x][y] = temp;
}
return f[x][y];
}
*/

【完整代码】

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define rei(x) scanf("%d",&x)
#define rep1(i,x,y) for (int i = x;i <= y;i++) const int N = 110; int n, m;
int f[N][N]; int dfs(int x, int y)
{
if (f[x][y] < 0x3f3f3f3f)
return f[x][y];
if (x == y)
return 1;
if (x == 1 || y == 1)
return max(x, y);
//竖切
rep1(i, 1, x - 1)
{
int temp = dfs(max(i,y),min(i,y)) + dfs(max(x-i,y),min(x - i, y));
if (temp<f[x][y])
f[x][y] = temp;
}
rep1(i, 1, y - 1)
{
int temp = dfs(max(x,i),min(x, i)) + dfs(max(x,y-i),min(x, y - i));
if (temp < f[x][y])
f[x][y] = temp;
}
return f[x][y];
} int main()
{
//freopen("D:\\rush.txt", "r", stdin);
//freopen("D:\\rush_out.txt", "w", stdout);
rei(n), rei(m);
memset(f, 0x3f3f3f3f, sizeof f);
if (n < m)
swap(n, m);
printf("%d\n", dfs(n, m));
return 0;
}

【t004】切割矩阵的更多相关文章

  1. OpenCV 2 Computer Vision Application Programming Cookbook读书笔记

    ### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...

  2. python的高级数组之稀疏矩阵

    稀疏矩阵的定义: 具有少量非零项的矩阵(在矩阵中,若数值0的元素数目远多于非0元素的数目,并且非0元素分布没有规律时,)则称该矩阵为稀疏矩阵:相反,为稠密矩阵.非零元素的总数比上矩阵所有元素的总数为矩 ...

  3. 科学技术库Numpy

    一.生成矩形操作 1)numpy获取的数据是以  “,”  为分割的数据结构,来生成矩阵 注意:skip_header=1 去掉行首,即说明行 ,Cao jin,,,python,-- ,张二毛,,, ...

  4. 机器学习初入门01-numpy的基础用法

    一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarr ...

  5. python-numpy-pandas

    目录 numpy 模块 创建矩阵方法: 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 pandas模块 series (一维列表) DataFrame DataF ...

  6. day18-常用模块III (numpy、pandas、matplotlib)

    目录 numpy模块 创建矩阵 获取矩阵的行列数 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 矩阵的运算 矩阵的点乘与转置 矩阵的逆 矩阵的其他操作 numpy.random生成随机数 pa ...

  7. logging,numpy,pandas,matplotlib模块

    logging模块 日志总共分为以下五个级别,这五个级别自下而上进行匹配debug->info->warning->error->critical,默认的最低级别warning ...

  8. 06-01 DeepLearning-图像识别

    目录 深度学习-图像识别 一.人脸定位 二.手工提取特征的图像分类 2.1 识图认物 2.2 传统分类系统的特征提取 2.3 计算机眼中的图像 2.4 什么是图像特征? 2.5 卷积运算 2.6 利用 ...

  9. Pathon中numpy模块

    目录 numpy模块 切割矩阵 矩阵元素替换 矩阵的合并 通过函数创建矩阵 fromstring/fromfunctions 矩阵的运算 常用矩阵运函数 矩阵的点乘 矩阵的逆 矩阵的其他操作 nump ...

随机推荐

  1. Python编写Appium测试用例(1)

    有段时间没有使用python编写测试用例了,很长时间以来,感觉appium这个测试工具确实不错,今天又重新拿起来,分享一下自己学习的一些用例,欢迎大家一起交流.学习! 1.登录客户端 #coding= ...

  2. oracle 10g文件目录结构详解

    一个典型的oralce目录结构如下: /u01└── oracle    ├── admin (数据库管理文件位置,以实例划分)    │   ├── mydb    │   │   ├── adum ...

  3. Hadoop读书笔记(一)Hadoop介绍

    1.Hadoop是什么? 适合大数据的分布式与计算平台. HDFS:Hadoop Distributed File System 分布式文件系统  MapReduce:并行计算框架 2.HDFS的架构 ...

  4. (转)Nginx在RedHat中系统服务配置脚本

    转自:http://binyan17.iteye.com/blog/1688308 以下代码是在前人的基础上,结合自己服务器实际情况修改的,本人服务器环境是:CentOS 6.31.创建启动脚本,  ...

  5. [CSS] Use CSS Counters to Create Pure CSS Dynamic Lists

    CSS counters let you create dynamic lists without JavaScript. In this lesson, we will create a multi ...

  6. php protected 类型如何获取

    感谢 https://blog.csdn.net/m0_38092942/article/details/81354184 比如对象如下 object(App\User)#265 (28) { [&q ...

  7. GCD 初步学习

    GCD应该是比較牛逼的东西了吧,一时半会应该是操作不好. 在cocoa-china上面有两篇关于GCD的文章.GCD 深入理解(一) GCD 深入理解(二) CSDN荣芳志博客:点击打开链接 我仅仅是 ...

  8. ARM 授权费用太贵 科技巨头欲转向开源架构 RISC-V

    不久前,特斯拉加入 RISC-V 基金会,并考虑在新款芯片中使用免费的 RISC-V 设计.至此,已有 IBM.NXP.西部数据.英伟达.高通.三星.谷歌.华为等 100 多家科技公司加入 RISC- ...

  9. Java链接Redis时出现 “ERR Client sent AUTH, but no password is set” 异常的原因及解决办法

    Java链接Redis时出现 "ERR Client sent AUTH, but no password is set" 异常的原因及解决办法 [错误提示] redis.clie ...

  10. Java 并发工具包 java.util.concurrent 大全

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...