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