openjudge每日推薦 9271奶牛散步

2021-07-24 08:04:04 字數 639 閱讀 1386

我們設f[n]為總的方案數,right為向右走的方案數,left為向左的方案數,up為向上的方案數,f[n] = right[n]+left[n]+up[n];

我們發現向左走的方案數只能由前一步向右走和向上走轉移過來,同樣的,向右走由前一步向左走和向上走轉移過來,向上走由向左,右,上轉移過來,那麼

right[n] = left[n-1] + up[n-1];

left[n] = right[n-1] + up[n-1];

up[n] = right[n-1] + left[n-1] + up[n-1];

我們發現:up[n-1] = f[n-1],right[n] + left[n] = left[n-1]+up[n-1]+right[n-1]+up[n-1]=

f[n-2]+up[n-1] = f[n-2]+f[n-1];

所以f[n] = 2*f[n-1]+f[n-2];

#include 

#include

#include

#include

using

namespace

std;

int f[50000];

int main()

每日一題 92 快速排序

題目來自網路 題目 1 基於陣列的快速排序 題目 2 基於鍊錶的快速排序 題目 1 基於陣列的快速排序 思路 使用分治的思想,先選擇樞軸,之後執行一次劃分,並把原序列劃分兩個子串行,之後遞迴處理。int partition int narr,int nstart,int nend narr nsta...

每日一題力扣92

反轉從位置 m 到 n 的鍊錶。請使用一趟掃瞄完成反轉。class solution def reversebetween self,head listnode,m int,n int listnode if m n return head dummy listnode 1 dummy.next h...

每日一題 92 歸併排序

題目來自網路 題目 1 基於陣列的歸併排序 題目 2 基於鍊錶的歸併排序 題目 1 基於陣列的歸併排序 思路 借助分治的思想,總是先對待排序進行分割,之後再對兩個子串行進行合併,生成乙個有序序列。時間複雜度為o nlogn 空間複雜度為o n void merge int narr,int nsta...