数据结构实验

news/2024/12/23 22:04:24/文章来源:https://www.cnblogs.com/BrotherCall/p/18625152

(一)线性表
1

#include <bits/stdc++.h>
using namespace std;int main() {int n;multiset<int> ms;cin >> n;for(int i = 1;i <= n;i ++) {int x;cin >> x;ms.insert(x);}int x;cin >> x;ms.insert(x);for(int i:ms) cout << i << ",";return 0;
}

2

#include <bits/stdc++.h>
using namespace std;int main() {int n;map<int , int> mp;set<int> s;cin >> n;for(int i = 1;i <= n;i ++) {int x , y;cin >> x >> y;s.insert(y);mp[y] += x;}cin >> n;for(int i = 1;i <= n;i ++) {int x , y;cin >> x >> y;s.insert(y);mp[y] += x;}if(s.size() == 0) {cout << "0 0";return 0;}bool flag = 0;for(auto it = s.end();;) {it --;int i = *it;if(mp[i] != 0) {flag = 1;cout << mp[i] << ' ' << i << ' ';}if(it == s.begin()) break;}if(flag == 0) cout << 0 << ' ' << 0;return 0;
}

3

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<int>a(n + 1);for(int i = 1;i <= n;i ++) cin >> a[i];for(int i = n;i >= 1;i --) cout << a[i] << ' ';return 0;
}

4

#include <bits/stdc++.h>
using namespace std;const int N = 1e6 + 100;
int pre[N] , lst[N] , a[N];void del(int x) {int p = pre[x] , l = lst[x];pre[l] = p;lst[p] = l;
}void solve() {int n;cin >> n;for(int i = 1;i <= n;i ++) cin >> a[i];for(int i = 2;i < n;i ++) {pre[i] = i - 1;lst[i] = i + 1;}pre[1] = n;lst[1] = 2;lst[n] = 1;pre[n] = n - 1;int now = 1 , syg;for(int i = 1;i <= 5;i ++) now = lst[now];cout << now << " ";syg = a[now];del(now);n --;while(n --) {while(syg --) now = lst[now];syg = a[now];del(now);cout << now << ' ';}cout << "\n";
}int main() {int t;cin >> t;while(t --) solve();return 0;
}

(二)堆栈
1

#include <bits/stdc++.h>
#define int long long
using namespace std;bool solve() {string s;cin >> s;int len = s.size();s = " " + s;stack<char> st;for(int i = 1;i <= len;i ++) {if(s[i] == '(' || s[i] == '[' || s[i] == '{') {st.push(s[i]);} else {if(s[i] == ')') {if(st.top() == '(') st.pop();else return false;}if(s[i] == ']') {if(st.top() == '[') st.pop();else return false;}if(s[i] == '}') {if(st.top() == '{') st.pop();else return false;}}}if(st.size() == 0) return true;return false;
}signed main() {ios::sync_with_stdio(false);cin.tie(0) , cout.tie(0);cout << (solve()?"True":"False");return 0;
}

2

#include <bits/stdc++.h>
#define int long long
using namespace std;const int N = 50;
char ch[N] = {'0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'};void work(int x,int c) {if(x == 0) return ;work(x / c , c);cout << ch[x % c];
}signed main() {ios::sync_with_stdio(false);cin.tie(0) , cout.tie(0);int n , m;cin >> n >> m;if(n == 0) cout << 0;elsework(n , m);return 0;
}

3

#include <bits/stdc++.h>using namespace std;#define SZ(x) ((int)((x).size()))
#define lb(x) ((x) & (-(x)))
#define bp(x) __builtin_popcount(x)
#define bpll(x) __builtin_popcountll(x)
#define mkp make_pair
#define pb push_back
#define fi first
#define se second
#define int long long
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<ll, int> pli;
typedef pair<ll, ll> pll;
typedef pair<double, int> pdi;ll ksm(ll x, ll y) {ll res = 1;while (y) {if (y & 1) {res = res * x;}x = x * x;y >>= 1;}return res;
}void solve() {string s;cin >> s;int cur = 0;vector<pii> a;for (int i = 0; i < SZ(s); i++) {char c = s[i];if (isdigit(c)) {cur = cur * 10 + (c - '0');if (i == SZ(s) - 1 || !isdigit(s[i + 1])) {a.push_back({cur, 0});cur = 0;}} else {a.push_back({c, 1});}}stack<int> num;stack<char> opt;map<char, int> mp;mp['+'] = mp['-'] = 1;mp['*'] = mp['/'] = 2;mp['^'] = 3;mp['('] = 0;auto calc = [&](int x, int y, char c) -> int {if (c == '+') {return x + y;} else if (c == '-') {return x - y;} else if (c == '*') {return x * y;} else if (c == '/') {return x / y;} else if (c == '^') {return ksm(x, y);} else {assert(false);}return 114514;};int n = SZ(a);for (int i = 0; i < n; i++) {if (a[i].se == 0) {num.push(a[i].fi);} else {char c = a[i].fi;if (c == '(') {opt.push(c);} else if (c == ')') {while (true) {char op = opt.top();opt.pop();if (op == '(') {break;}int y = num.top(); num.pop();int x = num.top(); num.pop();int res = calc(x, y, op);num.push(res);}} else {if (opt.empty()) {opt.push(c);} else if (mp[c] > mp[opt.top()]) {opt.push(c);} else {while (!opt.empty() && mp[opt.top()] >= mp[c]) {int op = opt.top();opt.pop();int y = num.top(); num.pop();int x = num.top(); num.pop();int res = calc(x, y, op);num.push(res);}opt.push(c);}}}}while (!opt.empty()) {int op = opt.top();opt.pop();int y = num.top(); num.pop();int x = num.top(); num.pop();int res = calc(x, y, op);num.push(res);}assert(SZ(num) == 1);cout << num.top() << '\n';
}signed main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int T = 1;while (T--) solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857692.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

绕过CPU:英伟达与IBM致力推动GPU直连SSD以大幅提升性能

绕过CPU:英伟达与IBM致力推动GPU直连SSD以大幅提升性能| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -------------…

如何屏蔽博客园新出的标题栏?一行代码屏蔽博客园冒出的标题栏!

如何屏蔽博客园新出的标题栏?一行代码屏蔽博客园冒出的标题栏!| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission | | -------------| -----…

【Adobe Illustrator 2025下载与安装】

1、安装包 我用夸克网盘分享了「Illustrator 2025」, 链接:下载地址 2、安装教程(安装前关闭系统防护) 1) 下载软件安装包,双击Set-up.exe安装2) 修改安装目录,点击继续3) 安装完成,点击启动4) 启动程序

geoserver 上传sld文件后,格式变为ANSI,导致的一系列问题

windows平台下,以geoserver-2.21.5默认样式dem为例,在修改其中的某个值为中文后,出现报错:UTF-8序列的字节无效先不管,点击保存后出现中文字体字符编码错误问题。 到data_dir/styles找到对应的文件,发现sld文件变为ANSI格式(原是utf-8),另存为UTF-8格式后,重新查看样…

Vscode实现应用qss样式表

qss简介 qss(Qt Style Sheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉。qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观。 其语法基本如下: objectName{property: value; }其中,objectName是要设置样式的对象名,property是要设置的属…

【嵌入式开发】链接让你的程序在内存中找到正确位置

一、空间和地址分配 二、符号解析与重定位 三、静态库链接前面已经了解了ELF目标文件的内容,本篇文章的重点在于怎么将多个目标文件链接起来形成一个可执行文件。 现在链接器的链接过程主要分两步: 1、空间和地址分配 2、符号解析与重定位 下面来看一下,这两个步骤具体干了什…

校园二手交易平台UML图

类图:时序图: 买家买商品:买家撤回:用户更新:用户登录:卖家发布:用例图:

2 升力线理论

2 升力线理论 2.1 减阻 阻力 什么是阻力?阻力是阻止主要运动(位移向量)的力。 可以用一个简单的公式描述阻力: \[\begin{equation}\overrightarrow{R_2}-\overrightarrow{R_1}\propto\vec{T}-\vec{D} \end{equation} \]这里的R是反作用力(reactive force),T是推力(thru…

python网络编程之sse

服务端:from fastapi import FastAPI from fastapi.responses import StreamingResponse from fastapi.middleware.cors import CORSMiddleware import timeapp = FastAPI()# 允许所有来源的跨域请求 app.add_middleware(CORSMiddleware,allow_origins=["*"], # 允…

Array Collapse

前言 调 \(C\) 快魔怔了, 还是先来打这个 思路 方法 \(1\) : 笛卡尔树 看到这种类 \(\rm{RMQ}\) 问题直接一个笛卡尔树起手, 恰好 \(p\) 是不重的, 那么更方便了啊 搞出树树挖下性质 例如样例中的 4 2 4 1 3你注意到每次删除操作相当于选择一个键值段, 然后只保留这一段的根节点…