zoukankan      html  css  js  c++  java
  • PKU2411

    #include<string.h>
    #include 
    <stdio.h>

    int m, n;
    __int64 f[
    12][2048];
    __int64 g[
    12][12];

    void DFS(int i, int j, int j2, int m2)
    {
        
    if(m2 == m)
            f[i
    +1][j2]+=f[i][j];
        
    else if((j2&(1<<m2))==0)
        

            DFS(i,j,j2 
    | (1<<m2),m2+1);
            
    if(m2<m-1 && (j2&(1<<(m2+1)))==0)DFS(i,j,j2,m2+2);
        }

        
    else
        
    {
            DFS(i,j,j2
    &~(1<<m2),m2+1);
        }

    }



    int main()
    {    

        
    {
            
    for(m=1;m<=11;m++)
            
    {

            
    int i, j;
            memset(f,
    0,sizeof(f));
            f[
    0][0]=1;
            
    for (i=0; i<11; i++)
            
    {
                
    for (j=0; j<(1<<m); j++)
                    
    if(f[i][j])
                        DFS(i,j,j,
    0);

                g[i
    +1][m]=f[i+1][0];
            }

        
    //    printf("(%d,%d)=%I64d   \n",n,m,g[n][m]);
            }

        
    //    printf("\n");
        }

        
    while(scanf("%d%d",&n,&m)==2)
        
    {
            
    if(m==0 && n==0)break;
            printf(
    "%I64d\n",g[n][m]);
        }

        
    return 0;
    }
        
  • 相关阅读:
    随机出题问题
    简读《构建之法》提问
    大二下第一次课后作业
    大道至简第七第八章读后感
    继承与接口动手动脑
    大道至简第六章读后感
    数组里的随机数问题
    大道至简第五章读后感
    输入法的用户界面
    搜索水王
  • 原文地址:https://www.cnblogs.com/SQL/p/913089.html
Copyright © 2011-2022 走看看