0分,help。
查看原帖
0分,help。
916570
封禁用户楼主2023/4/20 17:08

1关:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,m,n;
int dfs(int m,int n){
	if(m==1 or m==0 or n==0) return 1;
	if(m<n) return dfs(m,m);
	else return dfs(m-n,n)+dfs(m,n-1);
}
signed main(){
	cin>>t;
	for(int i=1;i<=t;i++){
		cin>>m>>n;
		cout<<dfs(m,n);
	}
	return 0;
}
/*
m个苹果,n个盘子
1.m < n,盘子数等于苹果数:
 1.1 return (m,m); 
2.m ≠n,盘子数不等于苹果数:
 2.1 每个盘子都放苹果
  2.1.1 m>n 苹果数大于盘子数
   return (m,n)=2.1.3+2.1.4=(m-n,n)+(m,n-1);
  2.1.2 m<n 苹果数小于盘子数 
   回到(1.) = return (m,m);
  2.1.3 自由苹果=m-n,return (m-n,n);
  2.1.4 自由空盘=n-m,return (m,n-1);
*/ 


2023/4/20 17:08
加载中...