第六章-数据结构入门

6.1 forest

#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;  

struct person
{
    int number;
    int streng;//体力
    int seat;//站位
}per[10086];  

bool compare(const person &p1,const person &p2)
{
    return p1.seat < p2.seat;
}  

int main()
{  

    int i,j;
    int n;
    cin >> n;
    for(i = 1; i <= n; i++)
    {
        cin >> per[i].streng;
        per[i].seat = i;
        per[i].number = i;
    }  

    int head = 1;
    int tail = n;
    for(i = 1; i <= n; i++)
    {
        if(per[i].streng > per[head].streng)
        {
            per[i].seat = per[head].seat - 1;
            head = i;
        }
        else
        {
            per[i].seat = per[tail].seat + 1;
            tail = i;
        }
    }  

    sort(per+1,per+n+1,compare);  

    for(i = 1; i <= n; i++)
        cout << per[i].number <<" ";  

    return 0;
}   

6.2 queue1

#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;  

int arr[10086];  

int main()
{  

    int i,j;
    int n;
    cin >> n;  

    int head= 0;
    int len = 0;
    string s;
    int num;
    for(i = 0; i < n; i++)
    {
        cin >> s;
        if(s == "INSERT")
        {
            cin >> num;
            arr[len++] = num;
        }  

        else
        {
            if(head > len-1)
                cout << "ERROR" <<endl;
            else
            {
                cout << arr[head] <<endl;
                head++;
            }
        }
    }  

    return 0;
}  

6.3 queue2

#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
using namespace std;  

struct person
{
    bool in;
    int left;
    int right;
}per[100086];  

int main()
{
    int i,j;
    int n;
    cin >> n;  

    per[0].right = 1;
    per[0].in = false;  

    per[1].left = 0;
    per[1].right = n+1;
    per[1].in = true;  

    per[n+1].in = false;  

    int num,op;
    for(i = 2; i <= n; i++)
    {
        cin >> num >> op;   

        if(op == 0)
        {
            per[per[num].left].right = i;
            per[i].left = per[num].left;
            per[num].left = i;
            per[i].right = num;
            per[i].in = true;
        }
        else
        {
            per[per[num].right].left = i;
            per[i].right = per[num].right;
            per[num].right = i;
            per[i].left = num;
            per[i].in = true;
        }
    }  

    int m;
    cin >> m;
    for(i = 0; i < m; i++)
    {
        cin >> num;
        per[num].in = false;
    }  

    i = 0;
    while(per[i].right < n+1)
    {
        if(per[per[i].right].in)
            cout << per[i].right << " ";
        i = per[i].right;
    }  

    return 0;
}  

6.4 power

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<stack>
using namespace std;  

stack<int> s;
int main()
{  

    int i,j;
    int n,size;
    cin >> n >> size;
    int now= 0;  

    int num;
    for(i = 0; i < n; i++)
    {
        cin >> num;  

        while(now < num)
            s.push(++now);  

        if(s.size() > size)
            break;  

        if(s.top() != num)
            break;  

        else
            s.pop();
    }  

    if(i < n)
        cout <<"ERROR " << num;
    else
        cout <<"OK";  

    return 0;
}  

6.5 maze1

#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
using namespace std;  

struct maze
{
    int x;
    int y;
}a,b;  

int vis[1010][1010];
int sum[1010][1010];
int step[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
queue<maze> que;  

int main()
{  

    int i,j;  

    int n,m,t;
    cin >> n >> m >> t;   //n行m列 t障碍物
    int sx,sy;   //起始坐标
    int fx,fy;   //终点坐标
    cin >> sx >> sy >> fx >> fy;  

    int tx,ty;
    for(i = 0; i < t; i++)
    {
        cin >> tx >> ty;
        vis[tx][ty] = 1;
    } //障碍物标记1  

    a.x = sx;
    a.y = sy;
    que.push(a);  

    sum[sx][sy] = 1;  

    while(!que.empty())
    {
        a = que.front();
        que.pop();  

        if(a.x == fx && a.y == fy)
        {
            cout << sum[a.x][a.y];
            return 0;
        }  

        else
        {
            for(i = 0; i < 4; i++)
            {
                int X = a.x + step[i][0];
                int Y = a.y + step[i][1];
                //在图内且未访问
                if(!vis[X][Y] && X > 0 && Y > 0 && X <= n && Y <= m)
                {
                    vis[X][Y] = 1;
                    sum[X][Y] = sum[a.x][a.y] + 1;  

                    b.x = X;
                    b.y = Y;
                    que.push(b);
                }
            }
        }  

    }  

    cout <<"-1";
    return 0;
}  
时间: 2024-10-07 17:14:27

第六章-数据结构入门的相关文章

Python学习系列----第六章 数据结构

本章主要讲的是python中重要的四种数据结构,分别是列表.元组.字典和集合. 6.1 列表 list 是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目应该包括在方括号中,这样 Python 就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的项目. 6.2 元组 元组用来将多样的对象集合到一起.元组和列表十分类似,只不过元组和字符串一样是不可变的即你不能修改元组.元组通过圆括号中用逗号分割的项目定义. 含有 0个或 1个项目的元组:

《码出高效 Java开发手册》第六章 数据结构与集合

码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/collection/index.md 6.1 数据结构 1. 数据结构定义: 数据结构是指逻辑意义上的数据组织方式及其相应的处理方式; 1.1. 数据组织方式: 树: 二叉树, 三叉树, B+ 树等; 图: 有向图, 无向图; 队列: 先进先出的线性结构; 哈希: 根据某种算法直接定位的数据组织方式; 1.2. 数据处理方式: 在既定的数据组织方式

ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区

原文:ArcGIS for Desktop入门教程_第六章_用ArcMap制作地图 - ArcGIS知乎-新一代ArcGIS问答社区 1 用ArcMap制作地图 作为ArcGIS for Desktop的组成部分之一,ArcMap用于数据的浏览.编辑.显示.查询.地图排版等.ArcMap和ArcCatalog一起构成了完整的数据处理与管理分析的功能.在前一章中已经介绍了ArcCatalog的使用,本章中将介绍ArcMap的使用.本章的例子依然使用第4章里的小区平面图示例,但是将从原理的角度做更加

《数据结构与算法分析:C语言描述》复习——第六章“排序”——冒泡排序

2014.06.17 01:04 简介: 冒泡排序是O(n^2)级别的交换排序算法,原理简单,属于必知必会的基础算法之一. 思路: 排序要进行N轮,每一轮从尾部逐个向前扫描,遇到逆序对就进行交换.确保每一轮把最小的元素交换到前面去.这个过程好比水中的气泡向上飘,所以叫冒泡排序.代码非常简单,所以语言描述反而显得麻烦了. 实现: 1 // My implementation for bubble sort. 2 #include <iostream> 3 #include <vector&

算法入门经典第六章 例题6-14 Abbott的复仇(Abbott&#39;s Revenge)BFS算法实现

Sample Input 3 1 N 3 3 1 1 WL NR * 1 2 WLF NR ER * 1 3 NL ER * 2 1 SL WR NF * 2 2 SL WF ELF * 2 3 SFR EL * 0 Sample Output (3,1) (2,1) (1,1) (1,2) (2,2) (2,3) (1,3) (1,2) (1,1) (2,1) (2,2) (1,2) (1,3) (2,3) (3,3) 析 题目的大意是,输入起点,离开起点时的朝向和终点,求一条最短路. 每一个

HTML与CSS入门——第六章 使用字体

知识点: 1.粗体.斜体和特殊文本格式的使用 2.字体的调整方法 3.特殊字符的使用方法 6.1 粗体.斜体和特殊文本格式: font-weight控制粗细 加粗<strong> font-style控制斜体 斜体<em> 其他标签:small,sup,sub,tt,pre,strike PS:pre可以使得空格符和分行被保留. 6.2 调整字体: font-family,font-size,color. PS:用户可以自定义字体.注意字体名如果有空格需要用''包含. 6.3 使用

《数据结构》第六章 知识点结构导图

<数据结构>第六章 知识点结构导图

Python编程:从入门到实践——【作业】——第六章作业

第六章作业 6-1 人 : 使用一个字典来存储一个熟人的信息, 包括名. 姓. 年龄和居住的城市. 该字典应包含键first_name . last_name . age 和city . 将存储在该字典中的每项信息都打印出来. 6-2 喜欢的数字 : 使用一个字典来存储一些人喜欢的数字. 请想出5个人的名字, 并将这些名字用作字典中的键: 想出每个人喜欢的一个数字, 并将这些数字作为值存 储在字典中. 打印每个人的名字和喜欢的数字. 为让这个程序更有趣, 通过询问朋友确保数据是真实的.6-3 词

Perl语言入门:第六章习题:处理用户所指定的名字并汇报相应的姓。

37 print "\n----------------------------------_exercise_6_1--------------------------\n";     38 my %bless_function = ( #hash may be a lexical variable     39    "constructors" => "default_values",     40    "error_ha