本文主要是介绍NEFU563 鸭子知多少?【递归】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:
http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=563
题目大意:
有个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又2只。这样经过了N个村子
还剩下2只鸭子,问:他出发时所赶的鸭子共有多少只。
思路:
路过第i个村子剩的鸭子数 = 第i+1天刚开始赶的鸭子数 = (第i+1个村子卖完剩的鸭子数+2)*2。用
dfs(i)表示第i天剩的鸭子数,那么dfs(i) = (dfs(i+1)+2)*2。从第1天开始卖,则答案就是第0天还未
卖的时候剩的鸭子数,即dfs(0)。
AC代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
long long N;long long dfs(long long i)
{if(i == N)return 2;long long d;return d = (dfs(i+1)+2)*2;
}int main()
{while(~scanf("%d",&N)){printf("%lld\n",dfs(0));}return 0;
}
这篇关于NEFU563 鸭子知多少?【递归】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!