【qduoj - 夏季学期创新题】矩形剖分(递归,dp)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/83443544

题干:

描述

对一个给定的矩形,将其划分成尽可能少的正方形,输出正方形的最少个数。例如,如下图所示的情况,则输入为3和4,输出为4。SE2{{)C18F[WGE]_XOEDYZ8.png

输入

输入两个整数中间用空格分开。

输出

输出最少分割成的正方形的个数。

输入样例 1 

3 4

输出样例 1

4

解题报告:

   简单递归。  这题如果是t组数据的话,这个f函数就可以写记忆化了。。。但是这个题就没必要了,因为状态转移之间没有重叠子问题,所以不需要dp。

AC代码:

#include<bits/stdc++.h>

using namespace std;
int f(int x,int y) {
	if(x == y) return 1;
	if(x > y) {
		return f(x-y,y) + 1;
	}
	else return f(y-x,x) + 1;
}
int main()
{
	int n,m;
	while(cin>>n>>m) {
		cout << f(n,m)<<endl;
	}
	
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_41289920/article/details/83443544