机试代码模板
文章目录
- 进制转换
- 高精度加/乘法
- 搜索
- BFS
- DFS
- 树
- 二叉树遍历
- 图
- Dijkstra算法
- Kruskal算法
- 动态规划
- 最长公共子序列(LCS)
- 最长上升子序列(LIS)
- KMP算法
进制转换
#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <algorithm>using namespace std;
string a="0123456789ABCDEF";
void d_to(int x,int m){if (x==0)return;d_to(x/m,m);cout<<a[x%m];}int main() {int x,m;cin>>x>>m;d_to(x,m);return 0;}
高精度加/乘法
#include <bits/stdc++.h>using namespace std;
int a[80], g[80], c[80];string add(string x, string y) {string temp;for (int i = 0; i < x.size(); ++i) {a[x.size() - i - 1] = x[i] - '0';}for (int i = 0; i < y.size(); ++i) {g[y.size() - i - 1] = y[i] - '0';}int ans = max(x.size(), y.size());for (int i = 0; i < ans; ++i) {c[i] += a[i] + g[i];c[i + 1] = c[i] / 10;c[i] %= 10;}ans++;if (c[ans - 1] == 0 && ans > 1)ans--;for (int i = 0; i < ans; ++i) {temp += to_string(c[ans - i - 1]);}memset(a, 0, sizeof(a));memset(g, 0, sizeof(g));memset(c, 0, sizeof(c));return temp;
}string mul(string x, string y) {string temp;for (int i = 0; i < x.size(); ++i) {a[x.size() - i - 1] = x[i] - '0';}for (int i = 0; i < y.size(); ++i) {g[y.size() - i - 1] = y[i] - '0';}int ans = max(x.size(), y.size());for (int i = 0; i < ans; ++i) {for (int j = 0; j < ans; ++j) {c[i + j] += a[i] * g[j];c[i + j + 1] += c[i + j] / 10;c[i + j] %= 10;}}int as = x.size() + y.size();while (c[as - 1] == 0 && as > 1)as--;for (int i = 0; i < as; ++i) {temp += to_string(c[as - i - 1]);}memset(a, 0, sizeof(a));memset(g, 0, sizeof(g));memset(c, 0, sizeof(c));return temp;
}int main() {int n;string s = "0";cin >> n;for (int i = 1; i <= n; ++i) {string jc = "1";for (int j = 1; j <= i; ++j) {string k = to_string(j);jc = mul(jc, k);}s = add(s, jc);}cout << s;
}
搜索
BFS
#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <algorithm>
#include <queue>using namespace std;
int a[100][100], v[100][100];
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
struct point {int x;int y;int step;
};
queue<point> r;int main() {int n, m, startx, starty, p, q;cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> a[i][j];}}cin >> startx >> starty >> p >> q;// BFSpoint start;start.x = startx;start.y = starty;start.step = 0;r.push(start);v[startx][starty] = 1;int flag = 0;while (!r.empty()) {int x = r.front().x;int y = r.front().y;if (x == p && y == q) {flag = 1;cout << r.front().step;break;}for (int i = 0; i < 4; ++i) {int tx, ty;tx = x + dx[i];ty = y + dy[i];if (a[tx][ty] == 1 && v[tx][ty] == 0) {point temp;temp.x = tx;temp.y = ty;temp.step = r.front().step + 1;r.push(temp);v[tx][ty] = 1;}}r.pop();}if (flag==0){cout<<"No Answer";}return 0;}
DFS
#include <iostream>using namespace std;
int p, q;
int miN = 99999999;
int a[100][100];// 1是空地,2是障碍物
int v[100][100];//0表示未访问,1表示访问
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};void dfs(int x, int y, int step) {if (x == p && y == q) {if (step < miN)miN = step;return;}// 顺时针试探for (int i = 0; i < 4; ++i) {int tx, ty;tx = x + dx[i];ty = y + dy[i];if (a[tx][ty] == 1 && v[tx][ty] == 0) {v[tx][ty] = 1;dfs(tx, ty, step + 1);v[tx][ty] = 0;}}return;
}int main() {int m, n;int startx, starty;cin >> m >> n;for (int i = 1; i <= m; ++i) {for (int j = 1; j <= n; ++j) {cin >> a[i][j];}}cin >> startx >> starty >> p >> q;v[startx][starty] = 1;dfs(startx, starty, 0);cout << miN;return 0;}
树
二叉树遍历
#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <algorithm>using namespace std;
typedef struct node {char data;struct node *lchild, *rchild;
} *BitTree;void CreateBitTree(BitTree &T) {char c;cin >> c;if (c == '0')T = NULL;else {T = new node;T->data = c;CreateBitTree(T->lchild);CreateBitTree(T->rchild);}
}void PreOrder(BitTree T) {if (T != NULL) {cout << T->data << ' ';PreOrder(T->lchild);PreOrder(T->rchild);}
}void InOrder(BitTree T) {if (T != NULL) {InOrder(T->lchild);cout << T->data << ' ';InOrder(T->rchild);}
}void PostOrder(BitTree T) {if (T != NULL) {PostOrder(T->lchild);PostOrder(T->rchild);cout << T->data << ' ';}
}int main() {BitTree T;CreateBitTree(T);cout << "前序遍历:";PreOrder(T);cout << endl;cout << "中序遍历:";InOrder(T);cout << endl;cout << "后序遍历:";PostOrder(T);
}
图
Dijkstra算法
#include <iostream>
#include <algorithm>
#include <string>
#include <queue>#define inf 0x3f3f3f3f
using namespace std;
const int M = 1e4 + 10;
const int N = 1000 + 10;
int n, m, s;
int mp[N][N];
int dis[N], vis[N];
int pre[N];void init() {memset(mp, inf, sizeof(mp));
}void dijkstra(int s) {memset(dis, 0x3f, sizeof(dis));memset(vis, 0, sizeof(vis));dis[s] = 0;while (1) {int mini = 0, miN = inf;for (int i = 1; i <= n; ++i) {if (vis[i] == 0 && miN > dis[i]) {mini = i;miN = dis[i];}}if (mini == 0)break;vis[mini] = 1;for (int i = 1; i <= n; ++i) {if (vis[i] == 0 && dis[i] > dis[mini] + mp[mini][i]) {dis[i] = dis[mini] + mp[mini][i];pre[i]=mini;}}}
}void output(int z){if (z==0)return;output(pre[z]);cout<<z<<"->";
}int main() {init();cin >> n >> m >> s;for (int i = 0; i < m; ++i) {int u, v, w;cin >> u >> v >> w;if (w < mp[u][v]) {mp[u][v] = mp[v][u] = w;}}dijkstra(s);cout<<dis[n]<<endl;for (int i = 1; i <= n; ++i) {output(i);cout<<endl;}
}
Kruskal算法
#include <iostream>using namespace std;const int maxn = 5005;struct node {int u, v, w;
} edge[200001];int cmp(node x, node y) {return x.w < y.w;
}int fa[maxn];int find(int x) {if (x == fa[x])return x;fa[x] = find(fa[x]);return fa[x];
}int main() {int N, M;cin >> N >> M; // N是结点,M是边for (int i = 0; i < M; ++i) {cin >> edge[i].u >> edge[i].v >> edge[i].w;}for (int i = 1; i <= N; ++i) {fa[i] = i;}int sum = 0;int total = 0;sort(edge, edge + M, cmp);for (int i = 0; i < M; ++i) {int fx = find(edge[i].u);int fy = find(edge[i].v);if (fx != fy) {fa[fx] = fy;sum += edge[i].w;total++;}}if (total < N - 1)cout << "orz";elsecout << sum;return 0;
}
动态规划
最长公共子序列(LCS)
#include <iostream>
#include <string>using namespace std;
const int MAX = 1000 + 10;
string s1, s2;
int f[MAX][MAX] = {0};
string ans;void LCS(int i, int j) {if (i == 0 || j == 0)return;if (s1[i - 1] == s2[j - 1]) {LCS(i - 1, j - 1);cout << s1[i - 1];} else if (f[i - 1][j] > f[i][j - 1]) {LCS(i - 1, j);} else {LCS(i, j - 1);}}int main() {cin >> s1 >> s2;int n = s1.size();int m = s2.size();for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {if (s1[i - 1] == s2[j - 1]) {f[i][j] = 1 + f[i - 1][j - 1];} else {f[i][j] = max(f[i - 1][j], f[i][j - 1]);}}}cout << f[n][m] << endl;LCS(n, m);return 0;
}
最长上升子序列(LIS)
#include <iostream>using namespace std;
const int MAX = 1000 + 10;
int a[MAX];
int dp[MAX];
int n;int LIS() {int ans = 0;for (int i = 1; i <= n; ++i) {dp[i] = 1;for (int j = 1; j < i; ++j) {if (a[j] < a[i]) {dp[i] = max(dp[i], dp[j] + 1);}}ans = max(ans, dp[i]);}return ans;
}int main() {cin >> n;for (int i = 1; i <= n; ++i) {cin >> a[i];}int res = LIS();cout << res;return 0;
}
KMP算法
#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>
#include <algorithm>using namespace std;
int Next[1000005];void getNext(char s[], int len) {int j = -1;Next[0] = -1;for (int i = 1; i < len; ++i) {while (j != -1 && s[i] != s[j + 1]) {j = Next[j];}if (s[i] == s[j + 1]) {j++;}Next[i] = j;}
}int KMP(char text[], char patten[]) {int n = strlen(text), m = strlen(patten);getNext(patten, m);int j = -1, ans = 0;for (int i = 0; i < n; ++i) {while (j != -1 && text[i] != patten[j + 1]) {j = Next[j];}if (text[i] == patten[j + 1]) {j++;}if (j == m - 1) {ans++;j = Next[j];}}return ans;
}int main() {char s1[1000005], s2[1000005];cin >> s1 >> s2;int a=KMP(s1, s2);cout<<a;
}
相关文章:
机试代码模板
文章目录进制转换高精度加/乘法搜索BFSDFS树二叉树遍历图Dijkstra算法Kruskal算法动态规划最长公共子序列(LCS)最长上升子序列(LIS)KMP算法进制转换 #include <iostream> #include <string> #include <cmath> #include <iomanip> #include <algori…...
Java性能优化-垃圾回收算法-理解CMS回收器
垃圾回收算法 理解 CMS回收器 三个基本操作 1.回收新生代(同时暂停所有的应用线程) 2.运行并发周期来清理老年代数据 3.如果有必要则FULL GC压缩老年代 当发生新生代回收 , 如果老年代没有足够的空间容纳晋升的对象则执行FULL GC,所有线程停…...
Oracle11G的表空间数据文件大小限制问题处理
1.表空间数据文件容量 oracle11g的表空间数据文件容量与DB_BLOCK_SIZE有关,在初始建库时,DB_BLOCK_SIZE要根据实际需要,设置为 4K,8K、16K、32K、64K等几种大小,ORACLE的物理文件最大只允许4194304个数据块(由操作系统…...
计算机三级|网络技术|备考指南|网络系统结构与设计的基本原则|1
一、网络系统结构与设计的基本原则宽带城域网的关键技术p1 p2 p3设计一个宽带城域网涉及“三个平台一个出口”,即网络平台、业务平台、管理平台和城市宽带出口。宽带城域网:宽带城域网划分为三个层次:核心层、汇聚层、接入层。核心层承担高速…...
基于 TI Sitara系列 AM64x核心板——程序自启动说明
前 言 本文主要介绍AM64x的Cortex-A53、Cortex-M4F和Cortex-R5F核心程序自启动使用说明。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 本说明文档适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubun…...

自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第一部分
我是去年9月22日才正式学习Java的,因为在国营单位工作了4年,在天津一个月工资只有5000块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。而且国营单位的气氛是你干的多了,领导觉得你…...

微电影广告的内容突破方案
微电影作为新媒体时代背景的产物,深受大众的欢迎,同时,微电影广告在微电影模式环境下应运而生,以自己独特的传播优势,俘获了大量企业主的青睐,也获得了广大青年群体的喜爱。微电影广告欲确保可持续发展&…...
茌平区为什么越来越多的企业由请高新技术企业?山东同邦科技分享
茌平区为什么越来越多的企业由请高新技术企业?山东同邦科技分享 近年来,越来越多的企业开始申报高新技术企业,认定为国家高新技术企业能获得非常多的好处,那么具体都有哪些呢? 一、国际高新技术企业认定的好处: 1、财政补贴: 获得高新企业…...

谷歌优化排名怎么做出来的?谷歌排名多久做上去?
本文主要分享谷歌排名的算法机制,让你很容易地用更短的时间把Google的自然排名做到首页。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 谷歌优化排名怎么做出来的? 答案是:持续更新原创优质内容…...

字节跳动青训营--Webpack
文章目录前言一、为什么要学习Webpack?二、什么是Webpack?1. 产生背景2. 基础概念三、使用Webpack1. 安装2. 编辑配置文件3. 执行编译命令核心流程四、如何使用Webpack流程类配置配置总览五、理解Loader六、理解插件插件钩子课外关注资料前言 此文章仅用…...
微信多媒体文件speex格式转为mp3文件格式
1、安装speex环境 wget https://ftp.osuosl.org/pub/xiph/releases/speex/speex-1.2.0.tar.gz tar -zxvf speex-1.2.0.tar.gz -C /usr/local/ cd /usr/local/speex-1.2.0/ ./configure make make install 2、配置path到/usr/lib 因为安装的speex生成的可执行文件默认在/usr…...

IAP初探
IAP(In-Application Programming)在应用编程,浅显易懂,按照字面意思即是在程序不关闭情况下,对应用进行再次写入程序,对程序的写入需要传输数据,而传输数据的前提是通信, IAP对代码进行更新可以简要分为以…...

【组织架构】中国铁路兰州局集团有限公司
1 公司简介 中国铁路兰州局集团有限公司,是中国国家铁路集团有限公司管理的18个铁路局集团有限公司之一,简称“兰局”。经过59年的发展,现已成为西北地区最大的交通运输企业之一,形成了以兰州为枢纽,由陇海铁路、包兰铁…...

【计算机三级网络技术】 第四篇 路由设计技术基础
文章目录一、分组转发二、路由选择1.理想的路由算法的基本特征2.路由算法的度量标准3.路由算法分类:4.IP路由选择与路由汇聚(重点)三、自治系统与Internet的路由选择协议1.自治系统2.路由选择协议的分类四、内部网关协议1.RIP的基本概念2.RIP的原理3.RIP的运行过程五…...
嵌入式工程师进阶,基于AM64x开发板的IPC多核开发案例分享
前 言 本文档主要说明AM64x基于IPC的多核开发方法。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu 18.04.4 64bit Linux Processor SDK:ti-proc…...

腾讯安全与锐捷网络战略合作,威胁情报能力“被集成”
2月28日,腾讯安全和锐捷网络在北京联合举办“威胁情报”战略合作发布会。双方发布了一款集成了腾讯安全威胁情报的新一代防火墙,并举办战略合作签约仪式。会上,锐捷网络安全产品事业部总经理项小升、腾讯安全总经理陈龙代表双方签署战略合作协…...

接口自动化测试用例详解
phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例,讲…...

【数据库增删查改进阶版】保姆级教程带大家去学习更加复杂的sql语句,各种各样的约束以及各种各样的查询
前言: 大家好,我是良辰丫🍅🍅🍅,上一篇数据库我们一起学习了基础版本的增删查改,今天我们将接触更高级的增删查改,主要是学习一些约束条件,你们准备好了嘛?开…...

【C#基础】C# 正则表达式
序号系列文章7【C#基础】C# 常用数据结构8【C#基础】C# 面向对象编程9【C# 基础】C# 异常处理操作文章目录前言1,Regex 的概念2,Regex 的创建3,Regex 常用操作4,Regex 类的使用5,学习资源推荐结语前言 🌼 h…...

企业活动直播如何设置VIP观看席?
阿酷tony / 2023-2-28 / 长沙 / 多图内容企业活动直播如何设置VIP观看席?有意思吧,直播也能设vip席位。在直播间可以分设尊享嘉宾席、特邀VIP以及观众席三个区域,为企业提供多种用户接待模式,不仅能为嘉宾营造尊享VIP体验…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...