• hdu1438——钥匙计数


    钥匙计数之一

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 2136    Accepted Submission(s): 1018

    Problem Description
    一把锁匙有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: 360 .. .. .. .. .. .. .. N=31: ... 注:根据Pku Judge Online 1351 Number of Locks或 Xi'an 2002 改编,在那里N<=16
     
    Author
    ecjtu_zhousc
     
    题目链接:
     
     
    解题思路:
     
    一道经典的递归思路题。
     
    1.在填入i槽孔前已经是钥匙,那么第i位无论是哪个深度的槽孔都是钥匙。
    2.在填入i槽孔前不是钥匙。
      (1)i槽孔填入2/3成为钥匙,那么之前i-1个槽孔由1/4组成并且不为仅有1或者仅有4.
      (2)i槽孔填入1/4成为钥匙,那么第i-1槽孔为4/1。
     
    那么我们将这些加起来是不是就是答案呢?清楚这样一个思路后,我们就要进行计算。
     
    a[i]+=a[i-1]*4;//填入槽孔前已经是钥匙
    a[i]+=[2^(i-1)-2]*2;//填入2/3成为钥匙
    temp=[4^(i-2)-2^(i-2)]*2-b[i-1];//填入1/4成为钥匙
    a[i]+=temp;
    b[i]=a[i-1]*2+temp;
     
    可能你会有这样的想法:在计算temp时4^(i-2),因为是4个数字随机,会出现例如这样的情况:
    i=8。当前i-1为2314231,而现在该填入第i位4。而在填入前,i=7时已经是钥匙了。
    temp计算时会减去b[i-1],b[i-1]=a[i-2]*2+填入1/4成为钥匙。
    仔细思考一下,刚刚举过的例子在这里是被减去了的。
  • 相关阅读:
    Net
    GUI
    第三方模块
    步入大四的第一天 2020/9/3
    期末复习计划及每日更新 8/10-9/2
    成都,come back 2020/8/10
    回家第三天 2020/7/31
    连续两天的好太阳的一天 2020/7/27
    规划规划,接下来的一个月该如何安排 7/25
    紧紧张张又兴兴奋奋的一天 2020/7/24
  • 原文地址:https://www.cnblogs.com/noback-go/p/11138028.html
Copyright © 2020-2023  润新知