poj1240 Pre-Post-erous!

思路:

根据前序序列和后序序列递归构造m叉树,确定每个节点的子节点数量。再用组合数公式累乘。

实现:

 1 #include <iostream>
 2 using namespace std;
 3
 4 int m, c[25][25], ans = 1;
 5 string x, y;
 6
 7 void init(int m)
 8 {
 9     c[0][0] = 1;
10     for (int i = 1; i <= m; i++)
11     {
12         c[i][0] = 1;
13         for (int j = 1; j <= i; j++)
14             c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
15     }
16 }
17
18 void dfs(int lx, int rx, int ly, int ry)
19 {
20     if (lx > rx) return;
21     int cnt = 0;
22     while (lx <= rx)
23     {
24         int pos = ly;
25         while (pos < ry && y[pos] != x[lx]) pos++;
26         dfs(lx + 1, lx + pos - ly, ly, pos - 1);
27         lx += pos - ly + 1;
28         ly = pos + 1;
29         cnt++;
30     }
31     ans *= c[m][cnt];
32 }
33
34 int main()
35 {
36     init(21);
37     while (cin >> m, m)
38     {
39         ans = 1;
40         cin >> x >> y;
41         int len = x.length();
42         dfs(1, len - 1, 0, len - 2);
43         cout << ans << endl;
44     }
45     return 0;
46 }
时间: 2024-10-07 17:50:05

poj1240 Pre-Post-erous!的相关文章

&lt;pre&gt; &lt;textarea&gt; &lt;code&gt;标签区别

这篇文章里面放的大都是我自己写程序的时候遇到的一些小问题,其实都是自己没有掌握的点,别人看起来应该很简单啦,但写下来能提醒自己,也能鼓励一下自己,这条路也不好走哇. <pre> <textarea> <code>三个标签区别:之所以要说这个,是因为我在写代码的时候遇到这样的问题:需要把html源代码在网页中显示出来,直接写<>这样的标签显然会被浏览器解析,因此我查了一下,可以用<代替< ,>代替>,但是直接这样写会失去代码中的换行等具

HTML实践发现(标签&lt;pre&gt;)

1. (1).第一种编辑: (2).浏览器中显示: 2. (1).第二种编辑 (2).浏览器中显示: 结果发现:使用标签<pre>,在浏览器中显示的结果与在<pre>下方编写的代码位置一致.

换行符在textarea、div、pre中的区别

关于换行符,网上有许多说法,IE早期的浏览器是\r\n,有的浏览器是\r,但很难找到确切的版本号.经过本人正则匹配测试,chrome.firefox.safari.IE11都是\n, 因此保险起见,若对换行符进行正则匹配,应当同时匹配\n, \r以及\r\n. 值得一提的是\n.\r和\r\n都有换一行的效果,有些同学写换行时常写作\n\r,这就相当于换了两行,因此必须注意! 换行符用于textarea textarea内的换行便是以换行符的形式实现,换行符也能用于textarea 换行符用于一

CSS:在input、pre中左边加上一个图标(一行和多行)

前言 接触过EasyUI的朋友都知道其警告框就是左边有个三角警告图标,此文所做的效果正是这样.此外,还将示例多行的做法. 一.在input左边加上一个图标(一行) 注:left center定义了图标的位置:transparent定义了背景颜色为透明( background-color的默认值) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht

利用pre平台实现iOS应用程序自动更新

1 // 2 // AppDelegate.m 3 // PreAutoUpdateDemo 4 // 5 // Created by mac on 15/12/18. 6 // Copyright © 2015年 mac. All rights reserved. 7 // 8 9 #import "AppDelegate.h" 10 11 #define USER_KEY @"1234321344SDFDFBVVFGDSVF" // 根据实际情况替换为自己的us

white-space中 pre pre-line pre-wrap的区别

css3为white-space新增了2个值:pre-line与pre-wrap. 那么,这2个新增值与pre又有什么区别呢? pre:会保留空格,但我想它与pre-line/pre-wrap最大的不同点就是不会自动换行,单行走到底,直到遇到一个换行符才会换行. pre-line与pre-wrap都会自动换行 但pre-line会把多个空格合并成一个. 而pre-wrap会保留空格.

&lt;pre&gt;标签

pre标签可以使文本中的回车空格显示: 但是不会自动换行,需要自己定义: pre { white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Exp

&lt;pre&gt;标记的使用...

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 </head> 7 <body> 8 <h2 align="center">学校片角图片展</h2> 9 <p align="center">点击图片放大以

oCam Pre v416.0 体积小的屏幕录制工具绿色破解版

鸡哥这两天再考虑要不要垂直发展网站,想象还是算了,本来内容就不太多,再专一一个内容的话更没东西更新了.这不早上闲逛了逛发现了个屏幕录像神器,oCam是款免费屏幕录像利器!这款免费屏幕录制捕捉工具,编码功能强大,支持游戏录像,可录制任何区域,可选全屏模式或自定义区域截图:还可捕捉到正在播放的声音:非常简单易用,而且完全免费.操作步骤只需三步:1.设置屏3幕录制范围:2.点击录制按钮:3.停止录制并保存:即可完成录像!  鸡哥还分享过一个韩国的录屏软件Bandicam破解版,有专门的游戏录制功能,鸡

Mongo 中间件 pre find 修改query

需求:在所有find查询的时候,默认添加查询参数 name:bennman //创建一个query中间件 myMid.js module.exports = function(schema){ //这里可以是find findOne update等,详见:http://mongoosejs.com/docs/middleware.html schema.pre('findOne', function (next) { //给查询的query增加name:bennman this.where({n