• 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;
    }

  • 相关阅读:
    React 组件
    React JSX
    React基础
    equals和hashCode详解
    Hibernate 二级缓存配置
    如何正确地停止一个线程?
    常见的异常以及常用的包,类,及其接口。
    5.水果
    Java -- Web前端面试题及答案(需更深入了解)
    微信access_token请求之简单缓存方法封装
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/4115520.html
Copyright © 2020-2023  润新知