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

  • 相关阅读:
    C++结构体内重载、this指针和友元函数(初步了解)
    数据结构—造树计划—二叉搜索树
    PTA顺序的分数
    PTA兼容任务
    PTA航船
    UML-基于GRASP对象设计步骤
    UML-设计对象时涉及的制品有哪些?
    UML-什么是用例实现(场景实现)?
    UML-如何使用GRASP进行对象设计?
    日志总结
  • 原文地址:https://www.cnblogs.com/woshijishu3/p/4115520.html
Copyright © 2011-2022 走看看