poj1240

2023-11-13

本题为已知M-叉树的前序遍历与后序遍历 要求给出对应树有多少种可能。

与poj2255类似 只要划分出子树 就把问题规模缩小了 然后就可以递归(目前只会写递归)

M叉树的前序遍历为 根      子树1 子树2 ... 子树K(K<=M)

M叉树的后序遍历为 子树1 子树2 ...子树K  根

进一步 根      (根      子树1 子树2 ... 子树K) 子树2 ... 子树K

   ( 子树1 子树2 ... 子树K 根) 子树2 ...子树K  根

可见只要通过前序遍历找出子树1的根就可以从后序遍历找到整个子树1进而将K个子树全部划分出来 (注意递归的方式 找到第一个子树即可开始递归)

代码如下

#include<iostream>
#include<cstring>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
long long c(int m,int k)
{
    long long  sum1=1;
    for(int i=m; i>(m-k); i--)
        sum1=sum1*i;
    for(int i=k; i>1; i--)
        sum1=sum1/i;
    return sum1;
}
char a[28];
char b[30];

long long sum;
/*void sum1(int m,int a1,int a2,int b1,int b2)
{
    if(a1>a2)return;
    int k=1,Jk;
    int Pa[10];
    int Pb[10];
    Pa[1]=a1;
    Pb[0]=b1-1;
    int j=Pb[0];
    for(int i=1;; i++)
    {
        for(Jk=0; b[j]!=a[Pa[i]]; Jk++,j++);
        Pa[i+1]=Pa[i]+Jk;
        Pb[i]=j;
        if(a[Pa[i+1]]=='\0'||Pa[i+1]>a2)break;
        else k++;
    }
    sum=sum*c(m,k);
    for(int i=1; i<=k; i++)
        sum1(m,Pa[i]+1,Pa[i+1]-1,Pb[i-1]+1,Pb[i]-1);
}*/
void sum1(int m,int a1,int a2,int b1,int b2)
{
    if(a1>a2)return;
    int k=1,Jk,tempa1,tempa2,tempb1,tempb2;
    tempa1=a1;
    tempb1=b1-1;
    int j=tempb1;
    for(int i=1;; i++)
    {
        for(Jk=0; b[j]!=a[tempa1]; Jk++,j++);
        tempa2=tempa1+Jk;
        tempb2=j;
        sum1(m,tempa1+1,tempa2-1,tempb1+1,tempb2-1);
        if(a[tempa2]=='\0'||tempa2>a2)break;
        else
        {
            k++;
            tempa1=tempa2;
            tempb1=tempb2;
        }
    }
    sum=sum*c(m,k);
}
int main()
{
    int m,la,lb;
    //freopen("test","r",stdin);
    while(true)
    {
        sum=1;
        b[0]='0';
        cin>>m;
        if(m==0)break;
        cin>>a>>b+1;
        la=strlen(a);
        lb=strlen(b);
        sum1(m,1,la-1,1,lb-2);
        cout<<sum<<endl;
    }
    return 0;
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

poj1240 的相关文章

  • Week5 作业D - 滑动窗口[POJ - 2823]

    题目大意 输入 输出 基本思路 这个题的数据规模较大 xff0c k和n最大可以达到1e6 xff0c 因此如果我们暴力判断所有区间 窗口内元素的范围 中的最大值和最小值一定会超时 复杂度 O n 2
  • POJ滑动窗口

    题目描述 现在有一堆数字共N个数字 xff08 N lt 61 10 6 xff09 xff0c 以及一个大小为k的窗口 现在这个从左边开始向右滑动 xff0c 每次滑动一个单位 xff0c 求出每次滑动后窗口中的最大值和最小值 例如 xf
  • POJ 3764--The xor-longest Path---DFS + Trie(最大异或值)

    POJ 3764 The xor longest Path Time Limit 2000MS Memory Limit 65536K Description In an edge weighted tree the xor length
  • POJ 2449 Remmarguts‘ Date---SPFA求评估函数 + A*最小堆BFS

    POJ 2449 Remmarguts Date Time Limit 4000MS Memory Limit 65536K Description Good man never makes girls wait or breaks an
  • POJ - 2823 滑动窗口

    题目 xff1a 给一个长度为 NN 的数组 xff0c 一个长为 KK 的滑动窗体从最左端移至最右端 xff0c 你只能看到窗口中的 KK 个数 xff0c 每次窗体向右移动一位 找出窗体在各个位置时的最大值和最小值 思路 xff1a 网
  • POJ 题目1239 ||ZOJ 题目 1499 Increasing Sequences(正反两次DP)

    Increasing Sequences Time Limit 1000MS Memory Limit 10000KTotal Submissions 3025 Accepted 1147 Description Given a strin
  • poj 1131进制转换

    POJ 1131 Octal Fractions 任意进制之间小数的转换 给定一个八进制的小数题目要求你把它转换为十进制小数 xff0c 转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零 即后置零 我采用的方法是乘10然后
  • poj 1068 parencondings

    题目描述 xff1a 定义 S 为一个合法的括号字符串 S 可以用以下两种方式编码 xff1a 1 用一个整数数组 P 来表示 xff0c 其中元素 p i 是 S 中每个 39 39 前的 39 39 的个数 xff1b 2 用一个整数数
  • 汉诺塔问题(Hanoi)-python递归实现

    描述 描述 一 汉诺塔问题 有三根杆子A B C A杆上有N个 N gt 1 穿孔圆盘 盘的尺寸由下到上依次变小 要求按下列规则将所有圆盘移至C杆 每次只能移动一个圆盘 大盘不能叠在小盘上面 提示 可将圆盘临时置于B杆 也可将从A杆移出的圆
  • poj 2096 Collecting Bugs

    Problem poj org problem id 2096 vjudge net contest 151678 problem Q Reference blog csdn net xingyeyongheng article detai
  • poj 1742 Coins

    Problem poj org problem id 1742 Reference www cppblog com flyinghearts archive 2010 09 01 125555 html blog csdn net wang
  • POJ--2709:Painter (贪心)

    1 题目源地址 http poj org problem id 2709 2 解题思路 每个颜料盒可能有3 12种颜色 其中每种颜色50ml 任意三种颜色 假设每种颜色Xml 可以混合出Xml的灰色 现在给出所需颜色的种数N 给出N个值分别
  • POJ--1328:Radar Installation (贪心)

    1 题目源地址 http poj org problem id 1328 2 解题思路 该题题意是为了求出能够覆盖所有岛屿的最小雷达数目 每个小岛对应x轴上的一个区间 在这个区间内的任何一个点放置雷达 则可以覆盖该小岛 区间范围的计算用 x
  • 【题解】poj2689(LibreOJ10197) 线性筛

    题目链接 筛出2到sqrt u 的所有质数 再标记 l u 中是质数p倍数的数 最后枚举相邻质数 部分代码实现参考了大佬题解 题目描述 给定两个整数 L R L R L R 求闭区间 L
  • poj 1330 Nearest Common Ancestors

    Problem poj org problem id 1330 vjudge net contest 80844 problem C Meaning 求最近公共祖先 Note 真 LCA 模版题 那就备份一发 LCA 模版 链式前向星存图
  • poj 2155 Matrix

    Problem poj org problem id 2155 vjudge net contest 146952 problem A Meaning 一个 N N 的矩阵 A 初始时全部值为 0 有两种操作 1 C x1 y1 x2 y2
  • POJ 275 Drainage Ditches|网络流|dinic模版

    问题描述 总时间限制 1000ms内存限制 65536kB 描述 Every time it rains on Farmer John s fields a pond forms over Bessie s favorite clover
  • poj 1195 Mobile phones

    Problem poj org problem id 1195 vjudge net contest 146952 problem C Meaning 有一个 S S 的正方形区域 两维的下标范围都是是 0 S 1 有 4 种操作 1 0
  • poj1240

    本题为已知M 叉树的前序遍历与后序遍历 要求给出对应树有多少种可能 与poj2255类似 只要划分出子树 就把问题规模缩小了 然后就可以递归 目前只会写递归 M叉树的前序遍历为 根 子树1 子树2 子树K K lt M M叉树的后序遍历为
  • poj1463

    1

随机推荐

  • H5中写一个下拉框,点击下拉框内容会出现在文本域中

    朋友出去面试做的面试题 分享了下 我就拿来做做 原题 HTML中有个下拉框 包含 风 雨 雷 电 添加事件 当选择风时 文本域内出现选择
  • 使用proteus仿真集成运放构成的三角波发生电路

    仿真电路图 仿真示波器结果
  • 用python做小游戏——以弹球游戏为例

    本博客使用了Pygame库来创建游戏窗口和处理游戏逻辑 一 代码详细解释 首先 通过调用pygame init 来初始化Pygame库 然后创建一个窗口并设置标题 pygame init screen pygame display set
  • 当全景视频遇到快手

    收到 山巅之处 正午的阳光透过翻滚的云海铺洒在岩石壁上 镶嵌在天边连绵起伏的山峦若隐若现 雄伟壮观 俯瞰去 脚下是天梯般陡峭的山崖 连接着山中绿洲 纵身一跃 映入眼帘的是逐渐清晰的林海 那些拔地而起的树木紧密相连 铸成一座郁郁葱葱的 绿色长
  • docker容器内服务访问宿主机服务

    我的个人博客 逐步前行STEP 本文背景 操作系统 macOs 笔者的docker虚拟机中运行了nginx node服务用来部署一个前后端分离的网站 但是由于docker内的node服务运行效率极低 每次代码更新后也不会自动重新编译 所以准
  • 函数间隔和几何间隔

    问题描述 求一个任意点 到一个超平面的距离 超平面表示 在线性代数中 一个超平面可以用下式表示 y X W T
  • 借助ChatGPT自动生成PPT

    借助ChatGPT自动生成PPT 首先让GPT生成一段markdown格式的PPT内容 尽量描述全面 以什么语言 什么格式 排版等等 打开mindshow网址 点击import and create 选择以markdown方式创建 再次点击
  • c++: 实战详解vector

    目的 本文从实际使用的角度出发 简介C 中vector的基本用法 如增 删 改 查等 并举例说明 增 如下代码演示如何向vector中添加元素 其中 include
  • NotePad++添加到右键快捷方式

    首先看效果图 NotePad 添加到右键快捷方式 接下来是操作方式 首先在桌面上新建一个txt文本文档 然后将写入如下内容 Windows Registry Editor Version 5 00 HKEY CLASSES ROOT she
  • 人才梯队如何搭建,3个维度让你打造一支人才团队

    模型在手 方法我有 文末完整版 一 人才梯队可以不建立吗 二 人才梯队建设的目的 三 梯队人才的培养模型 四 梯队人才的管理 五 人才梯队建设发展通道 人才盘点 素质模型 人才盘点的内容 人才盘点的结果 人才分类 人才选拔 晋升与发展 今日
  • hive中常见的谓词操作符/比较符号

    hive中
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • 一文带你了解芯片制造的6个关键步骤

    在智能手机等众多数码产品的更新迭代中 科技的改变悄然发生 苹果A15仿生芯片等尖端芯片正使得更多革新技术成为可能 这些芯片是如何被制造出来的 其中又有哪些关键步骤呢 智能手机 个人电脑 游戏机这类现代数码产品的强大性能已无需赘言 而这些强大
  • el-radio值无法回显

    首先检查 label 绑定一个动态变量 其次label为number类型可以直接回显 为string类型需要在最外层再加一层单引号
  • 【Android Socket专题】:UDP通信客户端app的demo的实现

    Android Socket 专题 UDP Client客户端 http blog csdn net shankezh article details 50731287 UDP Server服务器 http blog csdn net sh
  • Linux里隐藏的计算器,你知道它的奥秘吗?

    大家都知道 windows下有个计算器工具 我们在工作生活中经常使用到它 但是 你可知Linux下也同样有个计算器吗 当然 良许说的是命令行下的计算器工具 而不是界面型的计算器 良许是Linux应用开发工程师 平时基本是在命令行下工作 所以
  • MYSQL数据类型

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的 MySQL支持多种类型 大致可以分为三类 数值 日期 时间和字符串 字符 类型 数值类型 MySQL支持所有标准SQL数值数据类型 这些类型包括严格数值数据类型 INTEGER S
  • 二. Gateway 网关基础使用示例与自定义全局过滤器

    目录 一 步骤 二 目标服务 三 创建 Gateway 网关服务 三 自定义 GatewayFilter 过滤器 四 通过自定义 GatewayFilter 过滤器实现允许跨域问题 一 步骤 需求 现在有一个服务需要使用 Gateway 网
  • L2 开始揭开钢琴的盖子

    L2 开始揭开钢琴的盖子 1 计算机打开电源时执行的第一条指令 通常是IP指针 或PC指针 指向的内容 由硬件设计者决定 以 x86 计算机为例 x86 PC 刚开机时 CPU处于 实模式 寻址方式为 CS IP 开机时 CS 0xFFFF
  • poj1240

    本题为已知M 叉树的前序遍历与后序遍历 要求给出对应树有多少种可能 与poj2255类似 只要划分出子树 就把问题规模缩小了 然后就可以递归 目前只会写递归 M叉树的前序遍历为 根 子树1 子树2 子树K K lt M M叉树的后序遍历为