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

分析:

这道题其实就是道水题.当然如果数据再强一点.那就会很难了.不过Openjudge里的数据.这道题很水.而且,就是样例.所以这里可以采用暴力枚举位数.之后再加进行判断.如果这个枚举的可以,那就可以.恩.其实就是这样.不过.我在判断的时候加了个如果某个符号总数已经大于总位数的一半那就不行.这个小剪枝其实还是有点用的.具体还有什么其他的没想出来.希望各位dalao写完之后提些建议//.

#include<cstdio>
#include<algorithm>
using namespace std;
int line[25][25],cnt,sum,num[2],ans,n,num_1[2];
int DFS(int x);
int DFS_1(int x)
{if(x>n){num[1]=num_1[1];num[0]=num_1[0];if(DFS(2))ans++;return 0;}for(int i=0;i<=1;++i){line[1][x]=i;num_1[i]++;DFS_1(x+1);num_1[i]--;}return 0;<
}
int DFS(int x)
{if(x==n){line[x][1]=(line[x-1][1]==line[x-1][2] ? 1:0);num[line[x][1]]++;if(num[1]==num[0])return 1;return 0;}for(int i=1;i<=n-x+1;++i){line[x][i]=(line[x-1][i]==line[x-1][i+1] ? 1:0);num[line[x][i]]++;if(num[line[x][i]]>(sum/2+1))return 0;}if(!DFS(x+1))return 0;return 1;
}
int main()
{while(1){scanf("%d",&n);if(!n)break;sum=0;ans=0;for(int i=1;i<=n;++i)sum+=i;num[1]=0;num[0]=0;DFS_1(1);printf("%d %d\n",n,ans);}return 0;
}

转载于:https://www.cnblogs.com/uncle-lu/p/6007236.html

OpenJudge 2990:符号三角形 解析报告相关推荐

  1. openjudge 符号三角形

    2990:符号三角形 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 符号三角形的第1行有n个由"+"和"-"组成的 ...

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

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

  3. 005-3算法笔记【回溯】符号三角形

    问题 符号三角形的 第1行有n个由"+"和"-"组成的符号 ,以后每行符号比上行少1个,2个同号下面是"+",2个异 号下面是"- ...

  4. Windows MSVC 符号表(.lib文件)(C++符号表解析)(符号表是如何产生的)(第四步:链接)

    核心思想: 由于不同的编译器采用不同的名字修饰方法,必然会导致由不同编译器编译产生的目标文件无法正常相互链接,这是导致不同编译器之间不能互操作的主要原因之一. 符号表的由来以及C++符号表解析 win ...

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

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

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

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

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

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

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

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

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

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

  10. 头豹研究院发布《2022年中国数据库产品策略解析报告》

    本文援引于报告<2022年中国数据库产品策略解析报告>,首发于头豹科技创新网(www.leadleo.com).云和恩墨 MogDB 数据库及其在某城商行的实践案例入选该报告,为有采购和应 ...

最新文章

  1. mysql sql decode函数用法_oracle中的decode的使用介绍
  2. 什么?超过60%的开发者都开始从Java 8 升级到 Java 11了?
  3. Java 8特性有望进入.Net/Mono
  4. QT如何实现对于字符串数学公式计算
  5. Html制作知识库管理系统,HTML 编辑器
  6. 鸿蒙系统系列教程3-鸿蒙OS的技术特征讲解
  7. 数据结构之线性存储结构
  8. 契税申报期限_税局正式公告!财产和行为税合并纳税申报!附税种申报要点
  9. CF1156F. Card Bag
  10. Dijkstra算法介绍+正确性证明+性能分析
  11. 详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式(ubuntu 16.04)
  12. NAC、NAP及TNC安全接入技术对比分析
  13. 在redis上实现分布式锁
  14. 常用EXE文件反编译工具
  15. android nfc读写demo,android nfc常用标签读取总结
  16. 神经网络控制器设计原理,神经网络控制系统设计
  17. 利用鱼群算法求解最值问题(一元或多元)MATLAB编程实现
  18. Unity模拟科学计算器
  19. Oracle minus用法详解及应用实例
  20. java游戏管理器虚拟按键_Android实现手机游戏隐藏虚拟按键

热门文章

  1. microbit与python编程_简单5步开始学习microbit编程-windows篇
  2. 使用JSONP解决同源限制问题
  3. C语言——变量篇(一)变量关键字static、auto、extern、register
  4. 软件工程大学大三课表_专业选修课 | 面向大二、大三同学的专业选修课全面介绍来啦!...
  5. Dstream的action算子与RDD的action算子
  6. java Context类
  7. 洛谷 P3404 斐波那契(线段树)
  8. tensorflow Image 解码函数
  9. 《计算机系统:系统架构与操作系统的高度集成》——1.3 操作系统的作用
  10. 理解C语言——从小菜到大神的晋级之路(9)——多维数组