求解一题C++简单题

q200862546 2009-04-19 04:50:22
Description

一个简单的计算,你需要算出 f(m, n),其定义如下:

f(m, n) = n , (m = 1)

m , (n = 1)

f(m - 1, n) + f(m, n - 1) , (m > 1 and n > 1)


Input

第一行包含一个整数 T (1 ≤ T ≤ 100),表示下面的数据组数。

以下 T 行,其中每组数据有两个整数 m, n (1 ≤ m, n ≤ 2000), 中间用空格隔开。


Output

对每组输入数据,你需要计算出 f(m, n) ,并输出。每个结果占一行。


Sample Input

2
1 1
2 3



Sample Output

1
7
#include<stdio.h>
int bubble(int c,int d);
int main(void)
{
int a,b,t,m,i;
while(scanf("%d",&m)==1){
for(i=1;i<=m;i++){
scanf("%d%d",&a,&b);
if(b>a){
t=a;a=b;b=t;}
printf("%d\n",bubble(a,b));}
}
return 0;
}
int bubble(int c,int d)
{
if(c==1)return d;
else if(d==1)return c;
else if(c>1&&d>1)return bubble(c-1,d)+bubble(c,d-1);
}
我知道有个递归的方法 ,不过时间太长,中间有很多是重复计算的,大哥们帮我把递归改进下减少重复.
请附加说明下算法
...全文
138 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
q200862546 2009-04-19
  • 打赏
  • 举报
回复
没人鸟我吗

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧