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;
}

OpenJudge 2990:符号三角形 解析报告的更多相关文章

  1. OpenJudge 2985数字组合 解析报告/DP

    2985:数字组合 总时间限制:  1000ms 内存限制:  65536kB 描述 有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式.如:n=5,5个数分别为1,2,3,4,5,t=5: ...

  2. 符号三角形——F

    F. 符号三角形 Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format:      Java class name: 符号 ...

  3. 符号三角形(hdu 2510 搜索+打表)

    符号三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. 符号三角形_hdu_2510(深搜).java

    http://acm.hdu.edu.cn/showproblem.php?pid=2510 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  5. hdu 2510 符号三角形 (DFS+打表)

    符号三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. code vs 3376 符号三角形

    3376 符号三角形  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 如下图是由14个“+”和14个“-”组 ...

  7. 【a502】符号三角形问题

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 在一般情况下,符号三角形的第一行有n个符号.按照2个同号的下面是"+"号,2个异号的 ...

  8. java 字符串中参数化符号${}的解析

    我们在很多地方都能看到代表参数意义的符号${},可能我们在写一些框架的时候,有时候也需要用到这个符号,但他们是如何精确解析的?或者说需要我们自已写的时候,如何写?我们先来看以下的几个场景: 1.字符串 ...

  9. 洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告

    P1715 [USACO16DEC]Lots of Triangles好多三角形 题目描述 农民约翰希望通过卖出他拥有的一部分土地来增加收入.他在这片土地上种了\(N\)棵树(\(3\le N\le ...

随机推荐

  1. Java设计模式10:观察者模式

    观察者模式 观察者模式也叫作发布-订阅模式,也就是事件监听机制.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使他 ...

  2. 详解c#迭代器

    迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式.简单来说,迭代器模式使得你能够获取到序列中的所有元素 ...

  3. 作业三:PSP记录个人项目耗时情况

    PSP2.1        Personal Software Process Stages Time Planning  计划    20min              Estimate 估计开发 ...

  4. 本地DNS安装

    在centOS里最常用的DNS服务工具应该是bind了.下面就以bind为例做一个DNS服务. 首先查看bind 是否已经安装 Rpm -qa | gerp bind 如果没有的话就用yum 安装一下 ...

  5. Oracle函数脚本记录

    --内置函数 --聚合函数 返回单个值 '; --count()记录条数 select sum(degree) from score t; --sum(degree)求成绩总和 select avg( ...

  6. NodeJS系列~第四个小例子,NodeJs处理Get请求和Post请求

    返回目录 说在前 对于HTTP请求来说,我们通常使用的是Get和Post,除此之外还有put,delete等,而对于get来说,比较lightweight,只是对字符串的传输,它会被添加到URL地址里 ...

  7. 在Windows下安装Memcached

    Windows下的Memcache安装: 需要运行命令行工具cmd 请以管理员权限运行 开始->附件->命令提示符,以管理员身份运行 假如当前C:\windows\system32,输入c ...

  8. iOS ---Extension编程指南

    当iOS 8.0和OS X v10.10发布后,一个全新的概念出现在我们眼前,那就是应用扩展.顾名思义,应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他app时使用该项功能.你可以开 ...

  9. Chrome清除dns缓存

    Chrome清除dns缓存 为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度.你在谷歌Chrome浏览器的地址栏中输入about: ...

  10. javscript对cookie的操作,以及封装

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...