zoukankan      html  css  js  c++  java
  • hdu acm 2154(多解取一解)

    //题目中结果有一条限制就是最后必须跳回A,如果我们的思想框在这个条件上就很容易卡住,因为这样的条件下的路径很难有规律的罗列,然而我们说这个图形中有三个区域,我们算出每个区域的第n-1次的种类数,然后很容易就地推出了第n次的,取结果的时候只要去A区域的就可以了
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    using namespace std;
    long long int dp[65];
    int main(void)
    {
        int i,j;
        int t;
        int dpA[1001],dpB[1001],dpC[1001];
        dpA[1]=0;dpB[1]=1;dpC[1]=1;
        for(i=2;i<=1000;i++)
        {
            dpA[i]=(dpB[i-1]+dpC[i-1])%10000;
            dpB[i]=(dpA[i-1]+dpC[i-1])%10000;
            dpC[i]=(dpA[i-1]+dpB[i-1])%10000;
        }
        while(cin>>t&&t)
        {
            cout<<dpA[t]<<endl;
        }
        return 0;
    }

    //题目中结果有一条限制就是最后必须跳回A,如果我们的思想框在这个条件上就很容易卡住,因为这样的条件下的路径很难有规律的罗列,然而我们说这个图形中有三个区域,我们算出每个区域的第n-1次的种类数,然后很容易就地推出了第n次的,取结果的时候只要去A区域的就可以了
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<string>
    using namespace std;
    long long int dp[65];
    int main(void)
    {
        int i,j;
        int t;
        int dpA[1001],dpB[1001],dpC[1001];
        dpA[1]=0;dpB[1]=1;dpC[1]=1;
        for(i=2;i<=1000;i++)
        {
            dpA[i]=(dpB[i-1]+dpC[i-1])%10000;
            dpB[i]=(dpA[i-1]+dpC[i-1])%10000;
            dpC[i]=(dpA[i-1]+dpB[i-1])%10000;
        }
        while(cin>>t&&t)
        {
            cout<<dpA[t]<<endl;
        }
        return 0;
    }

  • 相关阅读:
    Gym
    Gym
    Gym
    LA 3713 宇航员分组
    LA 3211 飞机调度(2—SAT)
    POJ 1050 To The Max
    51nod 1050 循环数组最大子段和
    UVa 11149 矩阵的幂(矩阵倍增法模板题)
    POJ 1236 Network of School
    UVa 11324 最大团(强连通分量缩点)
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/4115520.html
Copyright © 2011-2022 走看看