題目位址
題目大意:一把鎖匙有n個槽,槽深為1,2,3,4。每鎖匙至少有3個不同的深度且至少有1對相連的槽其深度之差為3。求這樣的鎖匙的總數。
思路:這個題本來是在狀壓dp專項裡遇到的,光想狀壓dp了,,,搜了題解才知道是遞迴。。也算是個比較麻煩的遞迴了,分成兩個陣列關係,直接求難求,就轉化成總數,減去不符合條件的,就能得到符合的,**很好理解,就是自己做的話,很難想到遞推方程
**:#include#include#include#include#includeusing namespace std;
long long f[35],i,a[35],b[35],s,v;
int main()
{ cout<<"n=2: 0\n";
cout<<"n=3: 8\n";
s=64;v=8;
a[3]=14;b[3]=11;
for(i=4;i<=31;i++)
{s*=4;
v*=2;
a[i]=2*(a[i-1]+b[i-1]);
b[i]=2*a[i-1]+b[i-1];
f[i]=s-2*(a[i]+b[i])-v+2;
cout<<"n="<
遞迴與遞推 鑰匙計數之一
hdu 1438 一把鎖匙有n個槽,槽深為1,2,3,4。每鎖匙至少有3個不同的深度且至少有1對相連的槽其深度之差為3。求這樣的鎖匙的總數。input 本題無輸入 output 對n 2且n 31,輸出滿足要求的鎖匙的總數。sample output n 2 0 n 3 8 n 4 64 n 5 3...
hdu 1438 鑰匙計數之一
題意 略 題解 n 2 0 n 3 8 n 4 64 n 5 360 n 31 注 根據pku judge online 1351 number of locks或 xi an 2002 改編,在那裡n 16 分析 若x是鑰匙,則x加1,2,3,4.都是鑰匙則a i a i 1 4 若x不是鑰匙,加...
hdu 1438 鑰匙計數之一
problem acm.hdu.edu.cn showproblem.php?pid 1438 reference blog.csdn.net u010405898 article details 9530769 blog.csdn.net zoucharming article details 4...