您的位置:首页 > 其它

未名湖边的烦恼

2016-01-02 12:54 148 查看


#include <iostream>

int count = 0;  // 次数

// pool作为一个“鞋库”,n表示要还的,m的表示要借的。
// n减一表示还,鞋库加一;m减一,鞋库借出去一;当pool小于0,则不够借
void f(int n,int m,int pool)
{
if(pool<0)
{
return;
}
else if(m==0)
{
count++;
return;
}
else
{
if(n-1>=0)
{
n--;
pool++;
f(n,m,pool);  // 递归的思想就是,当有多个选择时(这里指既能借既能还)
n++;  // 任选择一个,再递归,递归时,不要想下一个递归怎样,直接扔到下一层
pool--;  // 任选择一个后,再恢复现状,再选另一个选择
}
if(m-1>=0)
{
m--;
pool--;
f(n,m,pool);
}
}
}

int main(int argc, char const *argv[])
{
int n,m;
scanf("%d %d",&n,&m);
if(m>n)
{
printf("0");
}
else
{
f(n,m,0);
printf("%d",count);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: