随笔分类 - 递归
摘要:错排问题,就是一个递归很简单的,拿出一个信有n-1种选择。然后再拿出一个,有两种选择:1.选原来那个拿出元素的那个位置就是有f[n-2]种选择2.不在原来那个位置,f[n-1]
阅读全文
摘要:这个题没什么好说的看下就好f[1]=1,f[2]=2,f[3]=3,f[4]=5...f[n]=f[n-1]+f[n-2]
阅读全文
摘要:这个题有两种思路可以考虑:1.把问题分解,不考虑首尾是否同色的是3*2^(n-1),答案就是在此基础上减去首尾相同的情况。那首尾相同是都少种呢?其实就是在元素有n-1个时再加入一个与首相同的尾。所以此题一定是用到了递归。公式为f[n]=3*2^(n-1)-f[n-1];代码如下:2.这道题就是一个递归,这个方法是利用了插空原理。其实可以把题看为n个颜色不同的箱子排成一环形,当插入一个时f[n]=f[n-1],当插入两个时f[n]=2*f[n-2].此时n>=4,因为这个方法的原理是利用了两个箱子颜色是否一样。代码如下:
阅读全文
摘要:#include <iostream>using namespace std;int how(int a,int b){ int sim,dou,sum=1; sim=a+1; dou=a+2; if(sim==b || dou==b) { return sum; } else { sum+=how(sim,b)+how(dou,b); } return sum; }int main(){ int n; while(scanf("%d",&n)!=EOF) { while(n) { int a,b; cin>>a; cin>>b;
阅读全文

浙公网安备 33010602011771号