博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gym - 101334E 多叉树遍历
阅读量:7221 次
发布时间:2019-06-29

本文共 936 字,大约阅读时间需要 3 分钟。

 

题意:给定一个字符串,求有多少种树与之对应,对应方式是,每次遍历左节点,没有了,就回溯;

 

分析:d[i,j] = sum(d[i+1,k-1],d[k,j]) (str[i]==str[k]);

坑点是数组竟然要long long 不然会超时,神奇;

1 #include 
2 3 using namespace std; 4 5 const int maxn = 300+5; 6 const int mod = 1000000000; 7 char str[maxn]; 8 int d[maxn][maxn]; 9 10 11 int dp(int i,int j) {12 if(i==j) return 1;13 if(str[i]!=str[j]) return 0;14 int& ans = d[i][j];15 if(ans>=0) return ans;16 ans = 0;17 18 for(int k=i+2;k<=j;k++) {19 if(str[i]==str[k]) {20 ans = (ans + (long long)dp(i+1,k-1)*(long long)dp(k,j)) % mod;21 }22 }23 return ans;24 }25 26 int main()27 {28 freopen("exploring.in","r",stdin);29 freopen("exploring.out","w",stdout);30 while(scanf("%s",str)!=EOF) {31 memset(d,-1,sizeof(d));32 printf("%d\n",dp(0,strlen(str)-1));33 }34 return 0;35 }
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6937997.html

你可能感兴趣的文章
介绍一款开源的类Excel电子表格软件
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析(9)...
查看>>
理解并配置:在路由器上建立主机名与DNS名称解析
查看>>
[.Net线程处理系列]专题三:线程池中的I/O线程
查看>>
配套自测连载(四)
查看>>
演示:OSPF的邻居关系故障分析与排除
查看>>
MySQL中AES_ENCRYPT('密码','钥匙')函数 可以对字段值做加密处理
查看>>
《从零开始学Swift》学习笔记(Day43)——构造函数继承
查看>>
修改SQL Server序列号
查看>>
企业云桌面-08-准备虚拟机-041-exsi01-042-exsi02-043-exsi03-044-exsi04
查看>>
MS UC 2013-0-Prepare Tool
查看>>
紧跟QQ 为什么支付宝不避嫌也推AR红包?
查看>>
Hibernate的批量处理-批量插入
查看>>
烂泥:Wing FTP Server与mysql数据库整合
查看>>
Apache HTTP Server搭建虚拟主机
查看>>
烂泥:查看服务器的BIOS是否开启CPU虚拟化
查看>>
[招聘季]--留些回忆给青葱岁月
查看>>
SANS:2017年网络威胁情报现状调研报告
查看>>
Ntop性能提升方案
查看>>
人民日报发声,区块链成“兵家必争之地”,或成“国家战略”
查看>>