hdu 2510 符号三角形(dfs+打表)
来源:互联网 发布:什么是搜索引擎优化 编辑:程序博客网 时间:2024/05/22 18:52
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
先用dfs搜一遍,然后把结果记录下来,直接打表。
/* //dfS搜一遍#include<iostream>using namespace std;int count,s[105];int a[25][12500];void dfs(int k){ if(k>24) return ; for(int i=0;i<=1;i++) { a[1][k]=i; count+=i; for(int j=2;j<=k;j++) { a[j][k-j+1]=a[j-1][k-j+1]^a[j-1][k-j+2]; //异或运算 把'-'看成1,'+'看成0 即1^1=0 1^0=1 0^1=1 0^0=0 count+=a[j][k-j+1]; } if(count*2==k*(k+1)/2) s[k]++; dfs(k+1); count-=i; for(int j=2;j<=k;j++) { a[j][k-j+1]=a[j-1][k-j+1]^a[j-1][k-j+2]; count-=a[j][k-j+1]; } }}int main(){ memset(s,0,sizeof(s)); count=0; dfs(1); int n; while(cin>>n&&n) cout<<n<<" "<<s[n]<<endl; return 0;}*/#include<iostream> using namespace std; int result[24]={0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229}; int main() { int n; cin>>n; while(n!=0) { cout<<n<<" "<<result[n-1]<<endl; cin>>n; } return 0; }
阅读全文
0 0
- hdu 2510 符号三角形 dfs+打表
- HDU 2510 符号三角形 dfs打表
- hdu 2510 符号三角形【DFS+打表】
- hdu 2510 符号三角形(dfs+打表)
- HDU 2510 符号三角形 暴力打表
- HDU 2510 符号三角形(dfs)
- HDU 2510 符号三角形 【DFS】
- HDU 2510--符号三角形【DFS】
- hdu2510 符号三角形(dfs+打表) 解题报告
- HDU 2510 符号三角形 NYOJ491 幸运三角形 (回溯||打表) 代码带解释
- 符号三角形(dfs)
- hdu 2510 符号三角形 (状压dp打表存入文件,O(1))
- 符号三角形问题(dfs)
- hdu 2510 符号三角形
- hdu-2510-符号三角形
- HDU 2510 符号三角形
- hdu 2510 符号三角形
- hdu 2510 符号三角形
- 在Ubuntu中Dcoker构建镜像
- 为什么要使用SLF4J而不是Log4J
- Apache配置详解
- sz与rz命令
- Java记录 -1- 基础JDK
- hdu 2510 符号三角形(dfs+打表)
- Java记录 -2- 原生数据类型
- Java记录 -3- 原生数据类型2
- Hadoop-HBASE 热添加新节点
- Hadoop HDFS Balancer
- Java记录 -4- 运算符 Operator
- Java记录 -5- 运算符续 Operator
- storm记录--1-- 实时计算系统
- storm记录--2-- Storm是什么