2990:符号三角形

  • 查看
  • 提交
  • 统计
  • 提问
总时间限制: 
1000ms 
内存限制: 
65536kB
描述
符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同。

n=7时的1个符号三角形如下:
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+

输入
每行1个正整数n<=24,n=0退出.
输出
n和符号三角形的个数.
样例输入
15
16
19
20
0
样例输出
15 1896
16 5160
19 32757
20 59984
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,num[30],sum[30],ans[30][30],f[30];
int m,maxn,i;
void dfs(int dep,int x,int y)
{
    if (dep==maxn+1)
      {
         return;
      }
    if (x==y)
     f[dep]++;
    for (int i=0;i<=1;i++)
     {
         ans[dep+1][1]=i;
         int xx=0,yy=0;
         for (int j=2;j<=dep+1;j++)
          {
             if (ans[dep][j-1]==1)
                ans[dep+1][j]=ans[dep+1][j-1];
             else
              if (ans[dep+1][j-1]==1)
               ans[dep+1][j]=0;
              else
                ans[dep+1][j]=1;
             if (ans[dep+1][j]==0)
               xx++;
             else
               yy++;
          }
         if (i==0)
          dfs(dep+1,x+xx+1,y+yy);
         else
          dfs(dep+1,x+xx,y+yy+1);
     }
}
int main()
{
    scanf("%d",&n);
    while (n!=0)
     {
        m++;
        num[m]=n;
        maxn=max(maxn,n);
        scanf("%d",&n);
     }
    for (i=1;i<=maxn;i++)
      sum[i]=sum[i-1]+i;
    dfs(0,0,0);
    for (i=1;i<=m;i++)
      printf("%d %d\n",num[i],f[num[i]]);
    return 0;
}
//这道题刚开始的思路是读入一个N,然后只搜索第一行的状态,然后根据的一行推下面的每一行,结果超时了。经大神指点,其实可以先进行离散处理找出最大值,根据前一行的状态不断往后推,每次只需枚举每一行的第一个,然后再搜索的过程中记录每一行的值。

openjudge 符号三角形相关推荐

  1. 算法设计与分析——回溯法——符号三角形问题

    #include<iostream> using namespace std;class Triangle{public:void Backtrack(int t);int n;//第一行 ...

  2. 7-3 符号三角形 (10 分)(思路+详解)

    一:题目 Come 宝 !!! 输入格式: 第一行符号个数n 输出格式: 符合要求的三角形个数 输入样例: 4 结尾无空行 输出样例: 6 二:思路 思路: 1.如果我们确立的第一行的符号是什么 ,那 ...

  3. 打印符号三角形问题java_回溯法之符号三角形问题

    问题描述: 由14个"+"号和14个"-"号组成的符号三角形. 2个同号下面是"+"号,2个异号下面是"-"号. 如图: ...

  4. java符号三角形问题_实验四 回溯算法和分支限界法 符号三角形问题

    基本题一:符号三角形问题 一.实验目的与要求 1.掌握符号三角形问题的算法: 2.初步掌握回溯算法: 二.实验题图 下面都是"-".下图是由14个"+"和14个 ...

  5. 回溯法-符号三角形问题

    问题: 分析: 约束函数:由于"+"和"-"数目相同,且我们的符号三角形有n行,所以总共有n(n+1) / 2个符号,因此每个符号只能有n(n +1) / 4. ...

  6. 符号三角形问题(回溯)

    [cpp] view plaincopy /*回溯法解符号三角形问题 问题描述: 如下图是由14个"+"和14个"-"组成的符号三角形, 2个同号下面都是&qu ...

  7. 符号三角形问题—回溯算法—java实现

    问题描述: 下图是由14个"+"和14个"-"组成的符号三角形.2个同号下面都是"+",2个异号下面都是"-": 符号三 ...

  8. Python回溯法解符号三角形问题

    以0表示加号,1表示减号 #! /usr/bin/env python #coding=utf-8 #! /usr/bin/env python #coding=utf-8 from __future ...

  9. 符号三角形-计算机算法设计与分析【1600+字解析 dfs全排列 列举情况】【题意分析】【算法分析】【思路是怎么来的】【过程是什么】

    符号三角形 题意分析 思路过程分析 算法分析 下图是由14个"+"和14个"-"组成的符号三角形.2个同号下面都是"+",2个异号下面都是& ...

最新文章

  1. MindSpore应用目标
  2. “清华数为”工业时序数据库IoTDB与DWF应用开发寒假师资培训圆满结束
  3. 本地windows上传大文件到Linux服务器工具的选择以及使用方法
  4. ext2.2打造全新功能grid系列--仅仅动态生成GridPanel
  5. 自学python转行-转行学习python 需要多久?应该如何学习?
  6. Windows核心编程 第十九章 DLL基础
  7. Spark学习之路 (五)Spark伪分布式安装
  8. Python_str 的内部功能介绍
  9. PWN-PRACTICE-BUUCTF-11
  10. 【英语学习】【Daily English】U03 Leisure Time L04 I need to squeeze in some time for reading
  11. 计算机底纹不起作用,CSS - 背景颜色在IE11中不起作用(CSS - background-color not working in IE11)...
  12. 字节跳动第三轮技术面,Java篇
  13. NP、OSPF基本配置
  14. 史上最详细的HashMap红黑树解析
  15. c语言isfinite用法,C# Single.IsFinite()用法及代码示例
  16. Excel学习笔记1||求和函数SUM、SUMIF、SUMIFS、SUMPRODUCT
  17. ACL访问控制列表(访问控制、抓取感兴趣流)详解及基本ACL和高级ACL的配置。
  18. 全民推荐时代已经到来!SaaS联盟推广计划如何开展?
  19. 电脑声音同步到手机,蓝牙耳机连接台式电脑另类解决方案
  20. codeforces1064E Dwarves, Hats and Extrasensory Abilities

热门文章

  1. 学习一下DOM中的cloneNode()与cloneNode(true)的基础知识
  2. spark job server原理
  3. java发微信_java访问微信接口发送消息
  4. adb传输文件报错couldn‘t create file:Read-only file system
  5. ipad如何连接VNC
  6. java数据结构学习笔记-二叉树前、中、后序遍历
  7. 针不戳,数据库性能优化八大方案。
  8. 2019全球传统文化春节晚会录制完成 非遗与雅文化令人期待
  9. oracle 与mysql查询_oracle与mysql分页查询语句sql
  10. Windows2003搭建web服务器(学习笔记)