這道題主要對給定限制條件的利用,然後利用排列組合的知識進行求解,我們通過列舉最後乙個填滿的點來進行計數,並通過排列組合中的乘法原則簡化計數次數
#include #include #include #include #define mod 1000000007
#define max 107
using namespace std;
int n;
int mark[max];
long long dp[max][max];
long long c[max][max];
void init ( )
void dp ( int left = 1 , int right= n )
if ( !dp[left+1][right] ) dp ( left +1 , right );
if ( !dp[left][right-1] ) dp ( left , right-1 );
dp[left][right]=(dp[left+1][right]+dp[left][right-1])%mod;
for ( int t = left + 1 ; t < right ; t++ )
if ( mark[t-1] == mark[t+1] )
}int main ( )
}
HDU 4055 計數dp 排列組合
題意 有一列數字,當第i數字比前乙個數字大的時候就可以生成乙個字元i,否則就是d,現在給出字串,求出數列有多少種排列方式,注意字串?代表比前乙個數字大小都可以。思路 此類題可以從當前第i數字是哪乙個考慮。定義 dp i j 表示第i個數字是j的組合數。那麼當第i個字串是 i dp i j s um ...
HDU 6143 排列組合 DP
題意 給出m字母,現在要求用m個字母去取名字,firstname 和 lastname 不能同時存在相同字母,問 會有多少種組合數,對於firstname 和 lastname 必須保證長度為n。資料量 0m 2000 題意 最開始最開始用的dp去推出所有的解,複雜度達到了n3 平常對複雜度的不重視...
hdu4283區間dp 記憶化搜尋 區間分化
題意 給你一些人的屌絲值di,計算總屌絲值 sum k 1 di k為第i個人進入的位置。給你乙個棧,可以使人的位置改變。方法一 記憶化搜尋 dp i j k 表示區間 i,j 第i個人放在k位置的屌絲值。搜尋所有的狀態,記錄已經搜尋的狀態。記憶化搜尋 這裡也可以用二維的陣列,另外用乙個sum陣列和...