![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Recursive solution
cyl纤云弄巧
To Be
展开
-
杭电 2045 递推
题意不多说。 **思路:**RPG问题对于n个方格,因为前后不能相同颜色所以有两种可能但是这两种不能随便选择还要看第n-1个方格,当第n-1个方格与第一个方格颜色不同的时候第n个方格有1中可能则有a[n-1]种可能,当与第一个方格相同的时候第则有a[n-2]*2中可能. 可以理解为若a[n-1]与a[0]颜色不同,则添加的一个格子只有一种填法,若a[n-1]与a[0]相同,则a[n-2]与 a[原创 2016-05-14 23:43:22 · 434 阅读 · 0 评论 -
杭电 2046 递推
这类题主要分析规律。 思路:有2*n个方。在放第n个的时候有两种可能:竖放,则有a[n-1]种可能;横放有a[n-2]种可能。 公式:a[i] = a[i-1] + a[i-2];#include<stdio.h>int main(){ __int64 a[55]; a[0] = 0; a[1] = 1; a[2] = 2; a[3] = 3;原创 2016-05-14 23:49:48 · 706 阅读 · 0 评论 -
杭电 2047 递推
思路:因为禁止在串中出现O相邻的情况,所以第n个有两种情况:1,不是O则有a[n-1]*2种情况;2,是O,则有a[n-2]×2种情况。 公式:a[i] = a[i-1]*2 + a[i-2]×2;#include<stdio.h>int main(){ __int64 a[45]; a[0] = 0; a[1] = 3; a[2] = 8; int i原创 2016-05-14 23:56:25 · 538 阅读 · 0 评论 -
杭电 2048 (错排)
递推加错排。 思路: 对于第n个人如果前n-1个人是错排则有(n-1)×a[n-1],若不是错排则必有一人拿着自己的名字和有a[n-2]错排,则第n人需要和他交换则有a[n-2]×(n-1)。 公式:a[i] = (i-1)*(a[i-1] + a[i-2]).#include<stdio.h>__int64 nn(int n){ int i; __int6原创 2016-05-15 11:04:05 · 374 阅读 · 0 评论 -
杭电 2049 (错排,递归,组合)
思路:分解问题为组合和错排。#include<stdio.h>__int64 nn(int n){ __int64 s = 1; int i; for(i = 1;i <= n; i++) s *= i; return s;}int main(){ __int64 a[22]; a[0] = 0; a[1] = 0;原创 2016-05-15 11:30:27 · 404 阅读 · 0 评论 -
杭电 2025 (折线分割平面)
思路: 先说一下直线分割平面的问题: 根据一类事物的部分对象具有某种性质,推出这类事物的所有对象都具有这种性质的推理,叫做归纳推理(简称归纳)。归纳是从特殊到一般的过程,它属于合情推理。 在平面上1条直线通过一个区域部分,将把原区域分成2个部分,即增加1个部分。 开始将平面看成1个区域,即1个部分; 第1条直线看成通过1个区域,增加1个部分,将平面最多分成1+1个部原创 2016-05-15 17:48:21 · 306 阅读 · 0 评论 -
杭电 2068(错排加组合)
对于组合有种方法。第一种很容易超出__int64的范围. 错误代码#include<stdio.h>__int64 nn(int n) //n应该不能超过20{ __int64 i,s = 1; for(i = 1;i <= n; i++) s *= i; return s;}int main(){ __int64 a[30];原创 2016-05-18 19:19:29 · 454 阅读 · 0 评论 -
POJ 百练 2754 八皇后问题
http://bailian.openjudge.cn/practice/2754/题意:虽然是汉语,但是也要好好读题。思路:别人的思路总是轻描淡写,但是我表示很难理解。这道题想了很久,只能说现在稍微了解。1: 用递归去把92中排列方式以从小到大方式计算出。那么每一次都要从小开始寻找。 而很好的是,写递归可以从小开始找,即使某一种不合适八皇后共存也会回溯重新找。原创 2016-08-30 16:16:29 · 1289 阅读 · 0 评论 -
POJ1664(递归,放苹果)
POJ1664递归主要是找到递归关系式和递归边界.而一般的题目不会出现类似于N!的这种题,多数是要分情况的。#includeint recusive(int m,int n){ if(m == 1 || n == 1) return 1; else if(m < n) return recusive(m,m); else原创 2016-07-30 14:26:10 · 426 阅读 · 0 评论