文章

2

粉丝

42

获赞

0

访问

565

头像
更新思路老实建树
P1317 浙江大学机试题
发布于2024年3月20日 16:51
阅读数 287

旧思路存在评论区大佬snake提出的问题:

1. 首先读取模板串(第一个输入的字符串),将其第一个字符作为关键字,根据关键字将字符串分为大于关键字的部分(mobanda)和小于关键字的部分(mobanxiao)。

2. 然后,对于每一个待比较的字符串,同样地,根据关键字将其分为大于关键字的部分(nowda)和小于关键字的部分(nowxiao)。接着,将这两个部分分别与模板串的对应部分进行比较。

3. 如果待比较的字符串与模板串在关键字、大于关键字的部分和小于关键字的部分都相同,则输出 "YES",否则输出 "NO"。

 

以下是老实建树通过比较先序和中序遍历序列确定

#include <iostream>
#include <string>
using namespace std;
typedef struct node {
    char x;
    node* lchild, * rchild;
}*Tree;

string ans = "";
void CreatTree(Tree& t, string s, int len) {
    if (len == 0)return;
    t = new node{ s[0],nullptr,nullptr };
    int index = 1;
    node* run = t;
    while (index < len) {
        if (s[index] > run->x) {
            if (run->rchild == NULL) {
                run->rchild = new node{ s[index],nullp...

登录查看完整内容


登录后发布评论

2 条评论
snake
2024年3月20日 17:25

思路有点问题,这个题的几种解法,要么建树比较,或者对字符串递归比较

你这个只分解了根的左右儿子,但是没有继续继续下去分解儿子的儿子

可以参考这个同学的代码:https://noobdream.com/post/85144/

赞(0)

GGboom : 回复 snake: 感谢感谢

2024年3月20日 17:31