zoukankan      html  css  js  c++  java
  • XDU 1056

    解法一:简单搜索肯定TLE,只是单纯的想写一发搜索练练手

    #include<cstdio>
    #include<cstring>
    #define maxn 1005
    using namespace std;
    int i,j,k,n,ans;
    int c[maxn][maxn];
    int dir[2][2]={{0,1},{1,0}};
    bool can(int i,int j)
    {
        if(i<0||j<0||i>n||j>n||i<j||c[i][j]!=0)
            return false;
        return true;
    }
    void dfs(int i,int j)
    {
        if(i==n&&j==n)
            ans++;
        else{ 
            if(can(i,j)){
                c[i][j]=1;
                for(int k=0;k<2;k++){
                    int ni=i+dir[0][k];
                    int nj=j+dir[1][k];
                    dfs(ni,nj); 
                }
            }
            else
                return ;
        }
        c[i][j]=0;
    //如果当前位置可以走 但是它通往的两个方向都不能走 则不走这一步 还原为0 
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            ans=0;
            memset(c,0,sizeof(c));
            dfs(0,0);
            printf("%d
    ",ans%10007);
        }
        return 0;
     } 

    解法2:动态规划

    //dp[i][j]表示从(0,0)到达(i,j)有多少种 
    //dp[i][j]=dp[i-1][j]+dp[i][j-1] 
    #include<cstdio>
    #include<cstring>
    #define maxn 1005
    using namespace std;
    int dp[maxn][maxn]; 
    #define N 10007
    int main()
    {
        int n;
        dp[1][1]=1;
        for(int i=1;i<maxn;i++){
            dp[i][0]=1; 
        }
        for(int i=1;i<maxn;i++){
            for(int j=1;j<=i;j++){
                dp[i][j]=dp[i-1][j]%N+dp[i][j-1]%N;
            }
        }
        while(scanf("%d",&n)!=EOF)
            printf("%d
    ",dp[n][n]%N);
        return 0;
     } 
  • 相关阅读:
    Django form
    八月22日,django知识点总结:
    MVC其实很简单(Django框架)
    Django框架
    python实战(开发新浪微博应用)
    MySQL练习题
    MySQL练习题参考答案
    Python中用format函数格式化字符串
    harbor的nginx替换
    bash传参的使用记录
  • 原文地址:https://www.cnblogs.com/freinds/p/6292168.html
Copyright © 2011-2022 走看看