问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构与算法的实验内容

发布网友 发布时间:2022-05-01 17:30

我来回答

1个回答

热心网友 时间:2022-06-20 08:01

第一题用python写的,第二题用c++写的。

在http://pat.zju.e.cn测试通过

# 第一题
def main():
    text = raw_input()
    n = int(text[0:text.find(' ')])
    m = int(text[text.find(' ')+1:])

    root = build(n)
    check(root, m)

def build(n):
    raw_name = raw_input()
    name = raw_name.strip()
    root = {}
    root['name'] = name
    root['layer'] = 0
    root['child'] = {}
    root['sibling'] = {}

    pre_node = root
    for i in range(1,n):
        raw_name = raw_input()
        name = raw_name.strip()
        cur_layer = raw_name.index(name)/2
        cur_node = {}
        cur_node['name'] = name
        cur_node['layer'] = cur_layer
        cur_node['child'] = {}
        cur_node['sibling'] = {}
        if cur_layer == pre_node['layer']:
            pre_node['sibling'] = cur_node            
        elif cur_layer == pre_node['layer']+1:
            pre_node['child'] = cur_node
        elif cur_layer == pre_node['layer']+1:
            print 'error!\n'
            break
        elif cur_layer < pre_node['layer']:
            path = getpath(root, pre_node['name'])
            pre_subling = {}
            for p in path:
                if p['layer'] > cur_layer:
                    break
                else:
                    pre_subling = p
            pre_subling['sibling'] = cur_node
        pre_node = cur_node

    return root

def check(root, m):
    #X is a child of Y
    #X is the parent of Y
    #X is a sibling of Y
    #X is a descendant of Y
    #X is an ancestor of Y
    for i in range(0,m):
        text = raw_input()
        X = text[0:text.find(' ')]
        Y = text[text.rfind(' ')+1:]
        if 'child' in text:
            path = getpath(root, X)
            if len(path)>=2 and path[-2]['name'] == Y:
                print True
            else:
                print False
        if 'parent' in text:
            path = getpath(root, Y)
            if len(path)>=2 and path[-2]['name'] == X:
                print True
            else:
                print False        
        if 'sibling' in text:
            pathX = getpath(root, X)
            pathY = getpath(root, Y)
            if len(pathX)>=2 and len(pathY)>=2 and pathX[-2]['name'] == pathY[-2]['name']:
                print True
            else:
                print False  
        if 'descendant' in text:
            path = getpath(root, X)
            for p in path:
                if p['name'] == Y:
                    break
            if p['name'] == Y:
                print True
            else:
                print False
        if 'ancestor' in text:
            path = getpath(root, Y)
            for p in path:
                if p['name'] == X:
                    break
            if p['name'] == X:
                print True
            else:
                print False                
                
def getpath(root, node_name):    
    path = [root]
    next_node = root['child']
    while True:
        while next_node != {}:
            path.append(next_node)
            if next_node['name'] == node_name:
                return path
            next_node = next_node['child']
            
        next_node = path.pop()
        if path == []:
            return path
        else:
            next_node = next_node['sibling']
            
if __name__ == "__main__":
    main()

// 第二题
#include <iostream>
#include <algorithm>

using namespace std;

const int MAX = 224;
typedef struct
{
    int index;
    double no;
    int range;
}ELEM;
int cmp_des( const ELEM &a, const ELEM &b ){
    return a.no>b.no; // 降序
}
int cmp_aes( const ELEM &a, const ELEM &b ){
    return a.index<b.index; // 升序
}
int main()
{
    int n,m;
    cin>>n>>m;

    double data[5][MAX];
    int paiming[5][MAX];
    ELEM tmp[MAX];
    int country[MAX];
    int i,j;
    for (i=0;i<n;i++)
    {
        cin>>data[1][i]>>data[2][i]>>data[0][i];
        data[3][i] = data[1][i]/data[0][i];
        data[4][i] = data[2][i]/data[0][i];
    }
    for (i=0;i<m;i++)
        cin>>country[i];
    
    for (i=1;i<=4;i++)
    {
        for (j=0;j<n;j++)
        {
            tmp[j].index = j;
            tmp[j].no = data[i][j];
        }
        sort(tmp,tmp+n,cmp_des);
        for (j=0;j<n;j++)
        {
            if (j>0 && tmp[j].no==tmp[j-1].no)
                tmp[j].range = tmp[j-1].range;
            else
                tmp[j].range = j+1;
        }
        sort(tmp,tmp+n,cmp_aes);
        for (j=0;j<n;j++)
        {
            paiming[i][j] = tmp[j].range;
        }
    }

    int top_12,top_34,top_1234;
    for (i=0;i<m;i++)
    {
        top_12 = paiming[1][country[i]]<=paiming[2][country[i]]?1:2;
        top_34 = paiming[3][country[i]]<=paiming[4][country[i]]?3:4;
        top_1234 = paiming[top_12][country[i]]<=paiming[top_34][country[i]]?top_12:top_34;
        printf("%d:%d",(int)paiming[top_1234][country[i]],(int)top_1234);
        if (i<m-1)
            printf(" ");
    }

    return 0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
15份的摘抄,要短的我是写作业的,差不多一份要一张纸 肯定会给高分_百度... 补牙前怎么样杀神经? ...我妈让我把牙堵上,想知道是怎么堵?要是杀神经,具体流程是什么样的... 汽车电瓶断电开关断正极还是负极 汽车电瓶断电开关断正极吗 为什么汽车电瓶断电后要断开负极 亳州市教师资格证考哪些科目 请问在观澜坐哪路公交车去深圳大学 陈旧隙腔性脑梗塞能喝酒吗?要喝的话多少为好?谢谢……! 男女朋友分手,怎样消除房产证上女方的名字 ...加了女方的名字 现在女方要提出分手 这房子该怎么处理? pathy天线宝宝编程代码 pathy编程和c需要哪个更适合未来发展? Java和pathy哪个好 怎样提取别人公众里面的图文信息中的视频链接 如何把视频号上的视频转发到公众 水密码白金熨斗眼霜效果怎么样?对皮肤会有刺激吗? 有什么眼霜好用呢,水密码白金熨斗眼霜怎么样? 水密码白金熨斗眼霜效果怎么样?我还没用过眼霜呢! 水密码白金熨斗眼霜怎么样,有谁了解的? 水密码白金熨斗眼霜怎么样,用过感觉如何? 最近很多人都在用水密码,请问水密码白金熨斗眼霜效果好吗? 水密码电动眼霜好用吗,谁能给我介绍一下? 水密码白金熨斗眼霜怎么样,谁能来说说? 想知道水密码白金熨斗眼霜怎么样,打算买?哪位给点参考? 水密码白金熨斗眼霜怎么样,谁有用过呢? 水密码白金熨斗眼霜怎么样,适合年轻人用不? 大家觉得水密码白金熨斗眼霜怎么样? 大家知道水密码白金熨斗眼霜怎么样不? 水密码白金熨斗眼霜怎么样,好不好用啊? 水密码好吗?这的白金熨斗眼霜怎样? 求一下 sypathy 和 empathy的区别 急急急 十万欧元去德国留学够了么?? 你好,我电脑也是经常蓝屏,代码一直都是f4 现在在德国留学一年下来大概要花多少钱啊? sao utils图标怎么做 求sao utils的图标也就是icon要的有点多。。。 怎么样把sao utils图片挂件弄出来?大神求解 怎样使用sao utils要详细的教学 sao utils怎么同时拥有六角图标和正方形图标? 请教详细完整的sao utils使用方法 SAO utils添加图标 为什么无法出现“动作”? SAO utils的背景怎么弄?像UP主那样子自动换的怎么弄?PS:这是款主题,由热风CG工作室制 求教!SAO Utils怎么把桌面的东西放到菜单中然后桌面就没东西了?像图片那样的 SAO Utils怎么建立二级菜单 sao utils怎么用 SAO Utils – SAO风格启动菜单怎么添加音乐文件 SAO Utils把天气挂件弄没了 怎么弄出来 sao utils桌面网页插件如何让网页自动更新 sao utils的图片挂件到底怎么用??? 请问大佬有SAO Utils(SAO风格启动菜单) V1.6软件百度云资源吗_百度...