【2016普及组模拟考试】03 递归 route(连线游戏)
2016-09-06 13:26
218 查看
笨笨连线游戏(route.cpp)
【题目描述】
一天,妈妈在黑板上画了一个大大的圆,然后又在圆弧上标上1,2,3,...,,2N个数。然后让笨笨任意选取一对数(两个不同的数)上连一条直线。然后再任意选取一对数,再边一条直线,但这条直线不能和任何别的直线相交。每个数都要恰好与另一个数连一条直线。
笨笨费了好大的劲才找出一种连线方案。妈妈在旁边问笨笨:给出N,请问不同的连线方案有多少种呢?
笨笨算不出来,只好请教作为大牛的你。
【输入】
多组数据,每组数据的格式为:
第1行:1个整数N(1<= N <= 150),表示在圆弧上会标记2N个数
当输入的N为0时,表示输入结束。
【输出】
每组输入对应输出一行,一个整数,表示连线的方案数。由于结果太大,只保留模10007后的余数。
【样例输入】
2
3
0
【样例输出】
2
5
这道题拿在手里很麻烦……所以我只有慢慢枚举了(呵呵),so:
f(1)=1;
f(2)=2;
f(3)=5;当枚举到这里时,赶脚很像斐波那契数列的改版——f(n)=2*f(n-2)+f(n-1)或f(n)=3*f(n-1)-f(n-2),但我不放心,继续!
f(4)=14;然而——推测全错……只能继续了……
f(5)=不会算(汗),不过我仔细的瞧了瞧,如果先画出一条线,那么可以分成两部分,根据乘法原理,将两边的方案数相乘即可,然后将每种不同划分方式相加即为总方案。
n(n=4)
则f(5)=∑f(i)*f(n-i)
i=0
所以程序就好写了:
【题目描述】
一天,妈妈在黑板上画了一个大大的圆,然后又在圆弧上标上1,2,3,...,,2N个数。然后让笨笨任意选取一对数(两个不同的数)上连一条直线。然后再任意选取一对数,再边一条直线,但这条直线不能和任何别的直线相交。每个数都要恰好与另一个数连一条直线。
笨笨费了好大的劲才找出一种连线方案。妈妈在旁边问笨笨:给出N,请问不同的连线方案有多少种呢?
笨笨算不出来,只好请教作为大牛的你。
【输入】
多组数据,每组数据的格式为:
第1行:1个整数N(1<= N <= 150),表示在圆弧上会标记2N个数
当输入的N为0时,表示输入结束。
【输出】
每组输入对应输出一行,一个整数,表示连线的方案数。由于结果太大,只保留模10007后的余数。
【样例输入】
2
3
0
【样例输出】
2
5
这道题拿在手里很麻烦……所以我只有慢慢枚举了(呵呵),so:
f(1)=1;
f(2)=2;
f(3)=5;当枚举到这里时,赶脚很像斐波那契数列的改版——f(n)=2*f(n-2)+f(n-1)或f(n)=3*f(n-1)-f(n-2),但我不放心,继续!
f(4)=14;然而——推测全错……只能继续了……
f(5)=不会算(汗),不过我仔细的瞧了瞧,如果先画出一条线,那么可以分成两部分,根据乘法原理,将两边的方案数相乘即可,然后将每种不同划分方式相加即为总方案。
n(n=4)
则f(5)=∑f(i)*f(n-i)
i=0
所以程序就好写了:
#include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<cmath> using namespace std; int A[150]; int f(int x) { if(A[x]!=0) { return A[x]; } else { for(int i=0;i<=x-1;i++) { A[x]+=f(i)*f(x-i-1); A[x]%=10007; } return A[x]; } } int main() { //freopen("route.in","r",stdin); //freopen("route.out","w",stdout); A[0]=A[1]=1; int n; while(1) { scanf("%d",&n); if(n==0) { return 0; } printf("%d\n",f(n)); } }
相关文章推荐
- NOIP2016年普及组模拟考试(9.3) 3.笨笨连线游戏
- 【2016普及组模拟考试】01 贪心 game(接数游戏)
- 模拟考试9.3-笨笨连线游戏(route.cpp)
- jzoj 1349. 【2011.12.17普及模拟】连线游戏
- 【2016普及组模拟考试】05 搜索 cow(母亲的牛奶)
- 【NOIP普及组】2016模拟考试(11.1)——生活大爆炸版石头剪刀布
- 2016普及组模拟考试 01题
- 【NOIP普及组】2016模拟考试(10.29)——排座椅
- 【NOIP普及组】2016模拟考试(11.8)——公路
- 【2016普及组模拟考试】04 搜索 tribe(部落卫队)
- 【NOIP普及组】2016模拟考试(10.29)——海港的船只
- 【NOIP普及组】2016模拟考试(10.29)——摆花
- 【模拟学车软件10大排行榜】3D模拟学车游戏软件_汽车模拟驾驶游戏软件_学开车考试软件_驾校模拟器
- jzoj 1568. 【普及模拟】石子游戏 解题报告
- JZOJ(中山纪中) 1591. 【普及模拟】游戏(j5.pas/cpp)
- NOIP2016年普及组模拟考试(9.3) 1.笨笨玩游戏
- 【NOIP普及组】2016年模拟考试(9.3)——笨笨玩游戏
- JZOJ__Day 4:【普及模拟】游戏
- 【NOIP普及组】2016年模拟考试(9.3)——笨笨的西瓜种植
- 【NOIP普及组】【DFS】2016年模拟考试(9.3)——母亲的牛奶