【递归】地盘划分

[提交][状态][讨论版]

题目描述

修罗王和邪狼被关进监狱,该监狱的地下秩序实际被不少暗势力所把持,这些暗势力根据其实力不同,划分出了大大小小的势力范围。具体划分方式是这样的:监狱是一个给定的矩形,每一个暗势力的势力范围都必须是一个正方形,划分时,最大的暗势力尽可能多地从矩形中划分一块正方形,接下来,第二大的暗势力在剩下的矩形中尽可能多的划分一块正方形……例如,图2.1中所示是一个3×4的矩阵,可最少划分为4个势力范围。

也就是说,取走一个3×3的正方形后,将问题规模变成3×1,然后变成2×1,最后变成1×1。规模每缩小一次,正方形的个数加1。

输入

两个int整数,即长和宽。

输出

正方形个数。

样例输入

3 4

样例输出

4

 1 #include <iostream>
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int n,m,cnt=1;
 8     scanf("%d%d",&n,&m);
 9     if(n<m)
10         swap(n,m);
11     while(n^m)
12     {
13         cnt++;
14         n-=m;
15         if(n<m)
16             swap(n,m);
17     }
18     cout << cnt << endl;
19     return 0;
20 }

原文地址:https://www.cnblogs.com/SoulSecret/p/8447484.html

时间: 2025-01-01 11:24:55

【递归】地盘划分的相关文章

【递归】地盘划分 暴力

问题 W: [递归]地盘划分 修罗王和邪狼被关进监狱,该监狱的地下秩序实际被不少暗势力所把持,这些暗势力根据其实 力不同,划分出了大大小小的势力范围.具体划分方式是这样的:监狱是一个给定的矩形,每一个暗势力的势力范围都必须是一个正方形,划分时,最大的暗势力尽 可能多地从矩形中划分一块正方形,接下来,第二大的暗势力在剩下的矩形中尽可能多的划分一块正方形……例如,图2.1中所示是一个3×4的矩阵,可最少划 分为4个势力范围. 也就是说,取走一个3×3的正方形后,将问题规模变成3×1,然后变成2×1,

整数划分问题 递归版

递归的划分 比较容易理解 但是要time out 若要把n用不大于n的数m划分 总共分四种情况 1.若n==m  则只有一种 但是要继续递归 所以等于 1+q(n,m-1) 2.若n<m 则不用考虑 无法划分 则 继续使用 q(n,n) 3.若n>m 则有两种情况   1.用m划分 剩余则是n-m  因此等于 q(n-m,m)   2.用小于m的数继续划分  则是 q(n,m-1)   3.所以合起来是  q(n-m,m)+q(n,m-1) 4.最后就是递归出口了   最底层肯定是1 1 if

acm刷题记录

我感觉毫无目的地刷题没有意义,便记录每周的刷题,以此激励自己! ----------6.6-------- [vijos1055]奶牛浴场                                      最大化               推荐IOI论文<浅谈用极大化思想解决最大子矩形问题> codeforces 679B - Bear and Tower of Cubes      xjb搞 codeforces  680A - Bear and Five Cards       

决策树 随机森林 adaboost

? 熵.互信息? 决策树学习算法 ? 信息增益 ? ID3.C4.5.CART? Bagging与随机森林? 提升 ? Adaboost/GDBT ? 熵.互信息 熵是对平均不确定性的度量. 平均互信息:得知特征Y的信息而使得对标签X的信息的不确定性减少的程度.描述随机变量之间的相似程度.(条件熵.相对熵:差异性) ? 决策树 决策树学习采用的是自顶向下的递归方法,有监督学习. 其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类. 建立

算法:归并排序

算法:归并排序 写在前面 归并排序算法是基于一个简单的归并操作:合并两个有序数组来形成一个更大的有序数组. 提炼归并的思想,归并排序就是将一个无序数组先划分成两个部分(递归地),对其分别排序,然后再进行合并. 归并排序无论输入情况,时间复杂度为N*LogN,主要的缺点是使用了一个额外的大小为N的空间. 简单的归并操作: 首先我们思考一下,如何将两个有序数组合并成一个有序数组? 我们应该想到新建一个的新数组re,然后分别从两个数组的左边开始,依次比较两个数组中的元素,将数较小的元素先排入新数组中.

数据挖掘领域十大经典算法初探

译者:July   二零一一年一月十五日 ----------------------------------------- 参考文献:国际权威的学术组织ICDM,于06年12月年评选出的数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.==============博主说明:1.原文献非最新文章,只是本人向来对算法比较敏感.感兴趣,便把原文细看了下,翻译过程中

快速选择算法

利用快速排序的思想,选择第k大(或小)的数. 具体地,利用快速排序的划分思想,每次将数组划分为两部分,确定该第k大(或小)的元素在哪一个部分,然后对该部分递归进行划分,直到找到第k大(或小)的元素.快速排序期望时间复杂度为O(n log n),快速选择算法期望时间复杂度为O(n). 关于枢纽元的选择: 选取第一个或最后一个元素,一般做法. 三数取中值法.取首.中.尾3个位置的元素的中间值,并将该中间值交换至第一个或最后一个元素,继续同1进行排序. 中位数的中位数法. 将所有元素进行组分,如每5个

算法(二)--------分治法

分治法的适?条件: • 该问题的规模缩?到?定程度就可以容易地解决.• 该问题可以分解为若?个规模较?的相同问题:递归思想的应?• 该问题所分解出的各个?问题是相互独?的,即?问题之间不包含公共的?问题.• 利?该问题分解出的?问题的解可以合并为该问题的解. 案例---快排: (1)过程 • Divide (Partition) – 对元素进?重排以得到这样?个划分 • 在某个位置s前?的所有元素都?于等于A[s] • 在位置s后?的所有元素都?于等于A[s]• Conquer: ?个划分确定后

【算法】5 传说中的快排是如何的

什么是高速排序 高速排序简单介绍 高速排序(英文名:Quicksort,有时候也叫做划分交换排序)是一个高效的排序算法,由Tony Hoare在1959年发明(1961年发布).当情况良好时.它能够比主要竞争对手的归并排序和堆排序快上大约两三倍.这是一个分治算法,并且它就在原地排序. 所谓原地排序,就是指在原来的数据区域内进行重排.就像插入排序一般. 而归并排序就不一样,它须要额外的空间来进行归并排序操作.为了在线性时间与空间内归并,它不能在线性时间内实现就地排序,原地排序对它来说并不足够.而高