9271:奶牛散步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9271:奶牛散步相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

9271:奶牛散步

总时间限制: 
10000ms
 
单个测试点时间限制: 
1000ms
 
内存限制: 
131072kB
描述

从一个无限大的矩阵的中心点出发,一步只能向右走、向上走或向左走。恰好走N步且不经过已走的点 
共有多少种走法? 

输入

一个数字,代表N,N<=1000

输出

输出有多少方案

样例输入
2
样例输出
7

由图,把方案数看作一棵树,f[n]表示到第n步有多少种走法,易得f[n]为x个三步+y个两步的和,而x的值等于f[n-1]的值(看图),通过相减得y的值为
f[n-1]-f[2],所以这道题用递推,起始条件是f[1]=3,f[2]=7;用类似于斐波拉契数列的算法就能AC了.
技术分享
这里上dalaoZX的代码(不开数组);
 1 #include<iostream>
 2 #include<iomanip>
 3 #include<cstdio>
 4 #include<cmath>
 5 #include<cstdlib>
 6 #include<cstring>
 7 #include<algorithm>
 8 using namespace std;
 9 int main()
10 {
11     int n;
12     int i;
13     int fn_1,fn_2;
14     scanf("%d",&n); //输入任意n值
15     int fn=0;
16     if(n==1)
17         fn=3; //初始化当n=1和n=2时的临界条件
18     else if(n==2)
19         fn=7;
20     else
21     {
22         fn_1=7;
23         fn_2=3;
24         for(i=3; i<=n; i++)
25         {
26             fn=(2*fn_1+fn_2)%12345; //当n>=3时fn的通式
27             fn_2=fn_1%12345;//更新fn_1和fn_2的值
28             fn_1=fn%12345;
29         }
30     }
31     cout<<fn;
32     return 0;
33 }

 

---恢复内容结束---





以上是关于9271:奶牛散步的主要内容,如果未能解决你的问题,请参考以下文章

noi 2.6_9271奶牛散步(DP)

读写锁 与 互斥锁

LSI MegaRAID SAS 9271-8i和LSI MegaRAID SAS 9361-8i有啥区别

详解C++多线程

洛谷1294高手去散步

bzoj1875 [SDOI2009]HH去散步——矩阵快速幂