【BUAA 591】The Last Alpha Star

【BUAA 591】The Last Alpha Star

二叉树 建树后DFS输出符合路径

最主要坑在建树。。。费了些神 还是不够

代码

#include

using namespace std;

typedef struct Node Node;
typedef struct Node *Nd;

typedef struct Node
{
    int data;
    Nd r,l;
}Node;

int d,tp,f;
int num[5555];

bool SetTree(Nd *t)
{
    (*t) = (Nd)malloc(sizeof(Node));
    char ch;
    int x = 0,f = 0;
    ch = getchar();
    while(ch == ‘\n‘ || ch == ‘\r‘) ch = getchar();
    while(ch >= ‘0‘ && ch <= ‘9‘)
    {
        f = 1;
        x = x*10+ch-‘0‘;
        ch = getchar();
    }
    if(f)
    {
        (*t)->data = x;
    }
    else (*t) = NULL;
   // cout<<tp<<" "<<x<<endl;
    if(ch == ‘(‘)
    {
        tp++;
        if(SetTree(&((*t)->l))) getchar();
        if(SetTree(&((*t)->r))) getchar();
        tp--;
        return 1;
    }
    else
    {
        if(f)
        {
            (*t)->l = NULL;
            (*t)->r = NULL;
        }
        return 0;
    }
}

void Dfs(int sum,Nd t)
{
    //cout<<sum<<endl;
    int i;
    if(t->l == NULL && t->r == NULL && sum == d)
    {
        f = 1;
        for(i = 0; i < tp;++i)
        {
            if(i) printf(" ");
            printf("%d",num[i]);
        }
        printf("\n");
    }else if(sum > d) return;

    if(t->l)
    {
        num[tp++] = t->l->data;
        Dfs(sum+num[tp-1],t->l);
        tp--;
    }
    if(t->r)
    {
        num[tp++] = t->r->data;
        Dfs(sum+num[tp-1],t->r);
        tp--;
    }
}

int main()
{
    //freopen("in.txt","r",stdin);
    int t,z = 0;
    scanf("%d",&t);
    char ch;
    while(t--)
    {
        d = 0;
        Nd tr;
        SetTree(&tr);
        ch = getchar();
        tp = 0;
        while(ch == ‘\n‘) ch = getchar();
        while(ch != ‘\n‘ && ch != ‘\r‘)
        {
            d = d*10+ch-‘0‘;
            ch = getchar();
        }
        tp = f = 0;
        printf("Case %d:\n",++z);
        num[tp++] = tr->data;
        Dfs(num[0],tr);
        if(!f) printf("I am so sorry!\n");
    }
    return 0;
}
时间: 2024-10-12 20:51:41

【BUAA 591】The Last Alpha Star的相关文章

【Unity Shaders】Transparency —— 使用alpha通道创建透明效果

本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源(当然你也可以从官网下载). ========================================== 分割线 ========================================== 写在前面 从这篇开始是一个全新的章节:透明效果(Transparency).之前在制作LOGO闪光效

【BUAA 933】拮据的模拟城市

[BUAA 933]拮据的模拟城市 最小生成树 Kruskal 注意双向路径 有道题就没考虑双向活生生坑了... 代码如下 #include <bits/stdc++.h> using namespace std; typedef struct Edge { int u,v,d; bool operator < (const struct Edge a)const { return d < a.d; } }Edge; Edge eg[111111]; int pre[1111];

【BUAA 595】太空漫步

[BUAA 595]太空漫步 最小生成树 kruskal模板题 代码如下 #include <bits/stdc++.h> using namespace std; typedef struct Edge { int u,v,d; bool operator < (const struct Edge a)const { return d < a.d; } }Edge; Edge eg[111111]; int pre[111]; int n,tp; void Init() { in

【BUAA 1247】 最短路径问题

[BUAA 1247] 最短路径问题 最短路径 没注明双向 傻傻的当成单向做的....审题!!! Dijkstra 模板题 代码如下 #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; typedef struct Edge { int d,p,v,next; }Edge; Edge eg[111111]; int head[1111],tp; int dis[1111],cst[1111]; bool vi

【BUAA 1246】数组中的逆序对

数组中的逆序对 归并算法的灵活运用 之前就听学长说这个用来算逆序对很好用 一直没有自己实现过 这次虽然比赛中没去做 赛后自己实现了出来 很有成就感! 也对归并算法透彻领悟了 真的好多算法都需要理解 而不是死记硬背 之前就是硬背过的 过一段时间就忘光了 这次彻底明白了算法执行过程 比起做出这道题 更宝贵 代码如下 #include <bits/stdc++.h> #define LL long long using namespace std; int num[111111]; int n[11

【算法模型】轻松看懂机器学习十大常用算法

[算法模型]轻松看懂机器学习十大常用算法 通过本篇文章大家可以对ML的常用算法形成常识性的认识.没有代码,没有复杂的理论推导,仅是图解,介绍这些算法是什么以及如何应用(例子主要是分类问题).以后有机会再对单个算法做深入地解析. 今天的算法如下: 决策树 随机森林算法 逻辑回归 SVM 朴素贝叶斯 K最近邻算法 K均值算法 Adaboost 算法 神经网络 马尔可夫 1. 决策树 根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问.这些问题是根据已有数据学

【Yii系列】最佳实践之后台业务框架

缘起 上面的几章都讲概念了,没有怎么讲到实践的东西,可能会有些枯燥,这很正常的,概念还是需要慢慢啃的,尤其是官网其他的部分,需要狠狠的啃. 什么,你啃不动了?看看官网旁边的那个在线用户吧. 你不啃的时候可是有这么多人在啃知识,如果不想以后被这打击,赶紧学!!!一如当年大学的我,每天夜里都抱着一本<算法导论>在啃一样,自律相当重要. 这一章我就带大伙了解一下前两章的概念有啥用,应用到实际,这是临门一脚,但是,我总是觉得概念的重要性至少要占70%,临门的一脚实践只占30%,望君能体会~ 环境 操作

【Python环境】matplotlib - 2D 与 3D 图的绘制

2015-10-30数据科学自媒体 类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数. 让我们加载它: from pylab import * 使用 qt 作为图形后端: %matplotlib qt 示例 类MATLAB API 绘图的简单例子: from numpy import * x = linspace(0, 5, 10) y = x ** 2figure() plot(x, y, 'r') xlabel('x') ylab

【The Expendables】团队博客目录

站立式会议: •[alpha版本]第一次站立式会议 文档: •团队编码规范 •需求规格说明书 其它: •[The Expendables]团队介绍