zoukankan      html  css  js  c++  java
  • *HDU2510 DFS

    符号三角形

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 1785    Accepted Submission(s): 923


    Problem Description
    符号三角形的 第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下:
    + + - + - + +
    + - - - - +
    - + + + -
    - + + -
    - + -
    - -
    +
     
    Input
    每行1个正整数n <=24,n=0退出.
     
    Output
    n和符号三角形的个数.
     
    Sample Input
    15
    16
    19
    20
    0
     
    Sample Output
    15 1896
    16 5160
    19 32757
    20 59984
     
    Source
     
    代码:
     1 // 打表;dfs出第一行后面的几行递推,就算打表别人家代码也打的那么漂亮。异或运算,1,0,分代表+,-;
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 using namespace std;
     6 int map[30][30];
     7 int ans[30]={0};
     8 int cnt=0;
     9 void dfs(int x)
    10 {
    11     if(x>24)
    12     return;
    13 
    14     for(int i=0;i<2;i++)
    15     {
    16         map[1][x]=i;
    17         cnt+=i;
    18         for(int j=2;j<=x;j++) //这里很巧妙,第一行大于等于2个时下面的就推出来了。
    19         {
    20             map[j][x-j+1]=map[j-1][x-j+1]^map[j-1][x-j+2];
    21             cnt+=map[j][x-j+1];
    22         }
    23         if(x*(x+1)/2==2*cnt)
    24         ans[x]++;
    25         dfs(x+1);
    26         for(int j=2;j<=x;j++)
    27         cnt-=map[j][x-j+1];
    28         cnt-=i;
    29     }
    30 }
    31 int main()
    32 {
    33     dfs(1);
    34     for(int i=1;i<=24;i++)
    35     printf("%d,",ans[i]);
    36     return 0;
    37 }
    38 /*结果:
    39 0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229  ;
    40 */
  • 相关阅读:
    Hadoop: No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).解决办法
    Libnfc
    生产服务GC调优实践及基本流程总结
    万年历算法
    C#中操作Oracle时的SQL语句参数的用法
    对DataGrid的初步了解
    C#中HashTable的用法
    正则表达式
    C#动态调用WebService
    Ubuntu 故障处理笔记
  • 原文地址:https://www.cnblogs.com/--ZHIYUAN/p/6048198.html
Copyright © 2011-2022 走看看