2 条题解

  • 0
    @ 2023-12-29 20:22:41
    #include<iostream>
    using namespace std;
    int main()
    {
    int n,w[1001],r[1001],b[1001],s[1001];
    cin>>n;
    s[1]=2;
    s[2]=2;
    s[3]=4; w[3]=2; r[3]=2; b[3]=2;
    for(int i=4;i<=n;i++)
    {
    w[i]=r[i-1]+b[i-1]/2;
    r[i]=w[i-1]+b[i-1]/2;
    b[i]=r[i-1]+w[i-1];
    s[i]=w[i]+r[i];
    }
    cout<<s[n];
    return 0;
    }
    

    没有运用斐波那契数列 分别算出红白蓝开头的方案个数 w[i]=r[i-1]+b[i-1]/2; r[i]=w[i-1]+b[i-1]/2; b[i]=r[i-1]+w[i-1]; 因为条件2,所以b[i-1]/2 总个数w+r 举例n=4 b-1 w-2 r-3 b 1213 1232(开头为2时不成立) 1323 1312(开头为3时不成立)(故需除以2) w 2132 2312 2121 r 3123 3213 3131

    • 0
      @ 2022-11-2 18:04:03

      用f(i)表示宽度为i的橱窗(或i条彩带)的合法放置方案数,则f(1)=2,f(2)=2,f(3)=4,f(4)= 6,f(5)=10,……不难发现,答案就是初始值不一样的斐波那契数列,所以,用递推法就可以很方便地求出f(n)。

      • 1

      信息

      ID
      407
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      递交数
      79
      已通过
      38
      上传者