题干:
描述
对一个给定的矩形,将其划分成尽可能少的正方形,输出正方形的最少个数。例如,如下图所示的情况,则输入为3和4,输出为4。
输入
输入两个整数中间用空格分开。
输出
输出最少分割成的正方形的个数。
输入样例 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;}