机试准备第13天
第一题是模拟出入栈游戏。
#include <stdio.h>
#include <stack>
#include <iostream>
using namespace std;
int main()
{string str;while(getline(cin, str)){stack<char> stk;int j = 0;//扫描出栈序列strfor(char i = 'a';i<='z';i++){stk.push(i);//每次按顺序入栈一个while(!stk.empty()&&stk.top()==str[j]){j++;//发生匹配,向后扫描stk.pop();//弹出匹配元素}}if(stk.empty()) printf("yes\n");else printf("no\n");}return 0;
}
第二题是简单计算器,代码逻辑与表达式计算相同。
#include <stdio.h>
#include <string>
#include <stack>
#include <map>
using namespace std;int main() {char strArr[300] = { 0 };map<char, int> priority = {{'\n',0},{'+',1},{'-',1},{'*',2},{'/',2}};while (fgets(strArr,300,stdin) != NULL) {string str = strArr;if (str == "0\n") {break;}string numStr = "";stack<char> opStack;stack<double> numStack;for (int i = 0; ; ++i) {if (str[i] >= '0' && str[i] <= '9') {numStr.push_back(str[i]);}else if (str[i] == ' ') {if (numStr.size() > 0) { // 操作数读取完成double num = stod(numStr);numStr = "";numStack.push(num);}}else { // 运算符if (str[i] == '\n' && numStr.size() > 0) { // 操作数读取完成double num = stod(numStr);numStr = "";numStack.push(num);}while (!opStack.empty() &&priority[str[i]] <= priority[opStack.top()]) {double rhs = numStack.top();numStack.pop();double lhs = numStack.top();numStack.pop();char curOp = opStack.top();opStack.pop();if (curOp == '+') {numStack.push(lhs + rhs);}else if (curOp == '-') {numStack.push(lhs - rhs);}else if (curOp == '*') {numStack.push(lhs * rhs);}else if (curOp == '/') {numStack.push(lhs / rhs);}}// 栈为空 或者 新op的优先级高于栈顶if (str[i] == '\n') {printf("%.2lf\n", numStack.top());break;}else {opStack.push(str[i]);}}}}return 0;}
下面学习递归与分治。若一个问题可以通过分而治之的思想解决,那就会用到递归。在代码段调用函数时,PC会走到被调函数的入口,栈区会压入一个新的栈针,返回时PC会回到主调方,栈区会弹出栈顶。递归的设计要考虑递归出口。
第三题是跳台阶,显然,这是一个复杂到没法全盘考虑的问题,只能考虑逐渐降低复杂度。把一个大问题分解为相似的小问题,看看能不能解决小问题。知道分解为能够直接解决的最小问题。本题中f(n) = f(n-1)+f(n-2)。使用分治法的两个要素:1.大问题要变成相似的小问题 2.找到最小问题的解决方案。
#include <stdio.h>
using namespace std;
int f(int n){if(n == 1) return 1;else if(n == 2) return 2;else return f(n-1)+f(n-2);
}
int main(){int n;scanf("%d", &n);int result = f(n);printf("%d", result);
}
第四题是不连续的字串。
using namespace std;
#include <stdio.h>
int f(int n){if(n == 1) return 2;else if(n == 2) return 3;else return f(n-1)+f(n-2);
}int main()
{int n;scanf("%d", &n);printf("%d", f(n));return 0;
}
第五题是斐波那契数列,最有自信的一集。
#include <stdio.h>
using namespace std;
int F(int n ){if(n == 0) return 0;else if(n == 1) return 1;else return F(n-1) +F(n-2);
}
int main(){int n;scanf("%d", &n);printf("%d", F(n));
}
第六题是骨牌。简单dp,dp[n] = dp[n-1]+dp[n-2]。
#include <stdio.h>
using namespace std;
int main(){int n;scanf("%d", &n);int dp[10010] = {0};dp[1] = 1;dp[2] = 2;if (n == 1) {printf("1");return 0;}else if(n == 2) {printf("2");return 0;}else {for(int i = 3;i<=n;i++){dp[i] = (dp[i-1]+dp[i-2])%999983;}printf("%d", dp[n]%999983);return 0;}
}
第七题是2的幂次方。这个是真看不懂,看了答案代码,首先得到n的二进制形式,找到对应二进制位不为0的位置,输出不为0的位置,然后将不为0的位置再次递归直到到递归边界。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string Get2sexponet(int n){if(n == 0) return "0";vector<int> exp;for(int i = 15;i >= 0;i--){if((n & (1<<i))!=0){exp.push_back(i);}}// n = 2^(exp[0]) + 2^(exp[1]) + ....求出n的指数形式string res ="";for(int i = 0; i <exp.size();i++){//2(XXX)+if(i != 0){res+="+";}if(exp[i] == 1){res+="2";}else {res += "2(" + Get2sexponet(exp[i]) + ")";}}return res;
}
int main()
{int n;while(scanf("%d", &n)!=EOF){printf("%s\n",Get2sexponet(n).c_str());}return 0;
}
第八题是矩阵幂次,主要是熟悉矩阵的各位置元素如何得到。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 15;
int n,k;
int w[N][N];
void mul(int c[N][N], int a[N][N], int b[N][N]){static int tmp[N][N];memset(tmp, 0, sizeof tmp);for(int i = 0; i <n;i++){for(int j = 0; j<n;j++){for(int k = 0;k<n;k++){tmp[i][j] +=a[i][k]*b[k][j];}}}for(int i=0; i<n;i++){for(int j = 0; j<n;j++){c[i][j] = tmp[i][j];}}
}
int main(){scanf("%d%d", &n, &k);for(int i = 0; i <n;i++){for(int j = 0; j < n;j++){scanf("%d", &w[i][j]);}}int res[N][N] ={0};for(int i = 0; i< n;i++) res[i][i] = 1;for(int i = 0;i<k;i++){mul(res,res,w);}for(int i = 0; i<n;i++){for(int j = 0;j<n;j++){printf("%d ", res[i][j]);}printf("\n");}
}
相关文章:
机试准备第13天
第一题是模拟出入栈游戏。 #include <stdio.h> #include <stack> #include <iostream> using namespace std; int main() {string str;while(getline(cin, str)){stack<char> stk;int j 0;//扫描出栈序列strfor(char i a;i<z;i){stk.push(i);//每…...
基于OpenCV的车牌识别系统(源码+论文+部署教程)
运行环境 基于OpenCV的车牌识别系统运行环境如下: • Python: ≥ 3.5 • OpenCV: ≥ 4.0 • IDE工具:Visual Studio Code(可自行选择) • 技术栈:Python OpenCV Tkinte 主要功能 基于OpenCV的车牌识别系统主要…...
MySQL:CRUD(增删查改)
目录 一、准备工作 二、Create 新增 1、语法 2、单行数据全列插入 3、单行数据指定列插入 4、多行数据指定列插入 5、多行数据全列插入 三、Retrieve 检索 1、语法 2、全列查询 3、指定列查询 4、查询字段为表达式 (1)常量表达式 &…...
德鲁伊连接池
德鲁伊连接池(Druid Connection Pool)是一个开源的Java数据库连接池项目,用于提高数据库连接的性能和可靠性。德鲁伊连接池通过复用数据库连接、定时验证连接的可用性、自动回收空闲连接等机制,有效减少了数据库连接的创建和销毁开…...
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器—tinyEasyMuduoWebServer csdn项目: 原文链接:https://blog.csdn.net/weixin_45178775/article/details/122257814 github链接:https://github.com/wyewyewye/tinyEasyMuduo…...
每周一个网络安全相关工具——MetaSpLoit
一、Metasploit简介 Metasploit(MSF)是一款开源渗透测试框架,集成了漏洞利用、Payload生成、后渗透模块等功能,支持多种操作系统和硬件平台。其模块化设计(如exploits、auxiliary、payloads等)使其成为全球…...
Python入门———条件、循环
目录 语句 顺序语句 条件语句 缩进和代码块 判断年份是否是闰年 空语句 pass 循环 while 循环 求5的阶乘: 求1!2!3!4!5! for循环 打印1-10 打印2,4,6,8&#x…...
InDraw6.2.3 | 甾体、核苷、黄酮类化合物实现简称命名
导语 当化学家对着屏幕输入"2-amino-1,9-dihydro-6H-purin-6-one"时,隔壁生物学家可能正在搜索"鸟嘌呤";这种命名差异如同"火星文"与"地球语"的碰撞。现在,鹰谷InDraw 6.2.3版带着53种多环化合物的…...
Linux中的TCP编程接口基本使用
TCP编程接口基本使用 本篇介绍 在UDP编程接口基本使用已经介绍过UDP编程相关的接口,本篇开始介绍TCP编程相关的接口。有了UDP编程的基础,理解TCP相关的接口会更加容易,下面将按照两个方向使用TCP编程接口: 基本使用TCP编程接口…...
系统部署【信创名录】及其查询地址
一、信创类型 (一)服务器: 1.华为云 2.腾讯云 3.阿里云 (二)中央处理器(CPU): 1.海思,鲲鹏920服务器 (三)中间件 1.人大金仓 ࿰…...
JavaWeb后端基础(7)AOP
AOP是Spring框架的核心之一,那什么是AOP?AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。AOP是一种思想,而在Spring框…...
Python 中多种方式获取屏幕的 DPI值
在 Python 中,可以通过多种方式获取屏幕的 DPI(每英寸点数)。以下是几种常见的方法: 方法 1:使用 tkinter 模块 tkinter 是 Python 的标准 GUI 库,可以通过它获取屏幕的 DPI。 import tkinter as tkdef …...
高效数据分析实战指南:Python零基础入门
高效数据分析实战指南 —— 以Python为基石,构建您的数据分析核心竞争力 大家好,我是kakaZhui,从事数据、人工智能算法多年,精通Python数据分析、挖掘以及各种深度学习算法。一直以来,我都发现身边有很多在传统行业从…...
Unity DOTS从入门到精通之EntityCommandBufferSystem
文章目录 前言安装 DOTS 包ECBECB可以执行的指令示例: 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世界游…...
开放充电点协议(OCPP)技术解析:架构演进与通信机制 - 慧知开源充电桩平台
开放充电点协议(OCPP)技术解析:架构演进与通信机制 引言 开放充电点协议(Open Charge Point Protocol, OCPP)作为电动汽车充电基础设施的核心通信标准,其技术架构与实现逻辑直接影响充电桩与中央管理系统&…...
MySQL 索引的数据结构(详细说明)
6. MySQL 索引的数据结构(详细说明) 文章目录 6. MySQL 索引的数据结构(详细说明)1. 为什么使用索引2. 索引及其优缺点2.1 索引概述 3. InnoDB中索引的推演3.1 索引之前的查找3.2 设计索引3.3 常见索引概念1. 聚簇索引2. 二级索引(辅助索引、非聚簇索引)…...
初学者快速入门Python爬虫 (无废话版)
全篇大概 5000 字(含代码),建议阅读时间 40min 一、Python爬虫简介 1.1 什么是网络爬虫? 定义: 网络爬虫(Web Crawler)是自动浏览互联网并采集数据的程序,就像电子蜘蛛在网页间"爬行"。 分类&…...
【git】ssh配置提交 gitcode-ssh提交
【git】ssh配置提交 gitcode-ssh提交 之前一直用的是gitee和阿里云的仓库,前两天想在gitcode上面备份一下我的打洞代码和一些资料 就直接使用http克隆了下来 。 在提交的时候他一直会让我输入账号和密码,但是我之前根本没有设置过这个,根本没…...
【二】JavaScript能力提升---this对象
目录 this的理解 this的原理 事件绑定中的this 行内绑定 动态绑定 window定时器中的this 相信小伙伴们看完这篇文章,对于this的对象可以有一个很大的提升! this的理解 对于this指针,可以先记住以下两点: this永远指向一个…...
C++————类和对象(一)
1.类定义格式 在C中,类(class)是封装数据和操作这些数据的函数的构造。类的定义包含成员变量和成员函数。 类的基本定义格式如下: class ClassName {// 访问修饰符public:// 公有成员DataType memberVariable; // 成员变量voi…...
SpringBoot参数校验:@Valid 与 @Validated 详解
SpringBoot参数校验:Valid 与 Validated 详解 一、案例(参数校验的必要性) 传统方式(无注解)的缺点: // 需要手动校验每个字段,代码冗余且易出错 public String register(User user) {// 手动…...
<论文>MiniCPM:利用可扩展训练策略揭示小型语言模型的潜力
一、摘要 本文跟大家一起阅读的是清华大学的论文《MiniCPM: Unveiling the Potential of Small Language Models with Scalable Training Strategies》 摘要: 对具有高达万亿参数的大型语言模型(LLMs)的兴趣日益增长,但同时也引发…...
SpringCloud系列教程(十三):Sentinel流量控制
SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Se…...
Codeforces Round 502 E. The Supersonic Rocket 凸包、kmp
题目链接 题目大意 平面上给定两个点集,判定两个点集分别形成的凸多边形能否通过旋转、平移重合。 点集大小 ≤ \leq ≤ 1 0 5 10^{5} 105,坐标范围 [0, 1 0 8 10^{8} 108 ]. 思路 题意很明显,先求出凸包再判断两凸包是否同构。这里用…...
论文阅读方法
文章目录 步骤一:对论文进行自我判断阅读题目和关键词。阅读摘要阅读总结要点 步骤二:阅读文章阅读图表和图表的注释阅读引言阅读实验部分阅读结果和作者对结果的讨论(创新点)要点 步骤三:精度论文回答问题1回答问题2回…...
ArcGIS操作:15 计算点的经纬度,并添加到属性表
注意:需要转化为地理坐标系 1、打开属性表,添加字段 2、计算字段(以计算纬度为例 !Shape!.centroid.Y ) 3、效果...
蓝桥杯历年真题题解
1.轨道炮(数学模拟) #include <iostream> #include <map> using namespace std; const int N1010; int x[N],y[N],v[N]; char d[N]; int main() {int n;int ans-100;cin>>n;for(int i1;i<n;i)cin>>x[i]>>y[i]>>v…...
IP-地址
主机号(Host ID) IP地址简介:IP地址是每台接入互联网的设备所拥有的唯一标识符,类似于电话号码的分层结构,由网络号和主机号组成。为了便于记忆,32位二进制的IP地址通常以点分十进制表示。 网络号…...
MoonSharp 文档一
目录 1.Getting Started 步骤1:在 IDE 中引入 MoonSharp 步骤2:引入命名空间 步骤3:调用脚本 步骤4:运行代码 2.Keeping a Script around 步骤1:复现前教程所有操作 步骤2:改为创建Script对象 步骤…...
2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 裁判测试程序样例: #include <stdio.h> #include <math.h>int search( int n );int…...
