openjudge 符号三角形
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 符号三角形相关推荐
- 算法设计与分析——回溯法——符号三角形问题
#include<iostream> using namespace std;class Triangle{public:void Backtrack(int t);int n;//第一行 ...
- 7-3 符号三角形 (10 分)(思路+详解)
一:题目 Come 宝 !!! 输入格式: 第一行符号个数n 输出格式: 符合要求的三角形个数 输入样例: 4 结尾无空行 输出样例: 6 二:思路 思路: 1.如果我们确立的第一行的符号是什么 ,那 ...
- 打印符号三角形问题java_回溯法之符号三角形问题
问题描述: 由14个"+"号和14个"-"号组成的符号三角形. 2个同号下面是"+"号,2个异号下面是"-"号. 如图: ...
- java符号三角形问题_实验四 回溯算法和分支限界法 符号三角形问题
基本题一:符号三角形问题 一.实验目的与要求 1.掌握符号三角形问题的算法: 2.初步掌握回溯算法: 二.实验题图 下面都是"-".下图是由14个"+"和14个 ...
- 回溯法-符号三角形问题
问题: 分析: 约束函数:由于"+"和"-"数目相同,且我们的符号三角形有n行,所以总共有n(n+1) / 2个符号,因此每个符号只能有n(n +1) / 4. ...
- 符号三角形问题(回溯)
[cpp] view plaincopy /*回溯法解符号三角形问题 问题描述: 如下图是由14个"+"和14个"-"组成的符号三角形, 2个同号下面都是&qu ...
- 符号三角形问题—回溯算法—java实现
问题描述: 下图是由14个"+"和14个"-"组成的符号三角形.2个同号下面都是"+",2个异号下面都是"-": 符号三 ...
- Python回溯法解符号三角形问题
以0表示加号,1表示减号 #! /usr/bin/env python #coding=utf-8 #! /usr/bin/env python #coding=utf-8 from __future ...
- 符号三角形-计算机算法设计与分析【1600+字解析 dfs全排列 列举情况】【题意分析】【算法分析】【思路是怎么来的】【过程是什么】
符号三角形 题意分析 思路过程分析 算法分析 下图是由14个"+"和14个"-"组成的符号三角形.2个同号下面都是"+",2个异号下面都是& ...
最新文章
- MindSpore应用目标
- “清华数为”工业时序数据库IoTDB与DWF应用开发寒假师资培训圆满结束
- 本地windows上传大文件到Linux服务器工具的选择以及使用方法
- ext2.2打造全新功能grid系列--仅仅动态生成GridPanel
- 自学python转行-转行学习python 需要多久?应该如何学习?
- Windows核心编程 第十九章 DLL基础
- Spark学习之路 (五)Spark伪分布式安装
- Python_str 的内部功能介绍
- PWN-PRACTICE-BUUCTF-11
- 【英语学习】【Daily English】U03 Leisure Time L04 I need to squeeze in some time for reading
- 计算机底纹不起作用,CSS - 背景颜色在IE11中不起作用(CSS - background-color not working in IE11)...
- 字节跳动第三轮技术面,Java篇
- NP、OSPF基本配置
- 史上最详细的HashMap红黑树解析
- c语言isfinite用法,C# Single.IsFinite()用法及代码示例
- Excel学习笔记1||求和函数SUM、SUMIF、SUMIFS、SUMPRODUCT
- ACL访问控制列表(访问控制、抓取感兴趣流)详解及基本ACL和高级ACL的配置。
- 全民推荐时代已经到来!SaaS联盟推广计划如何开展?
- 电脑声音同步到手机,蓝牙耳机连接台式电脑另类解决方案
- codeforces1064E Dwarves, Hats and Extrasensory Abilities
热门文章
- 学习一下DOM中的cloneNode()与cloneNode(true)的基础知识
- spark job server原理
- java发微信_java访问微信接口发送消息
- adb传输文件报错couldn‘t create file:Read-only file system
- ipad如何连接VNC
- java数据结构学习笔记-二叉树前、中、后序遍历
- 针不戳,数据库性能优化八大方案。
- 2019全球传统文化春节晚会录制完成 非遗与雅文化令人期待
- oracle 与mysql查询_oracle与mysql分页查询语句sql
- Windows2003搭建web服务器(学习笔记)