刷题日记——机试(1)

1. 字母排序

在这里插入图片描述

分析——不排序解题

  • 创建一个大小为128的数组sheet,序号表示ascii码强转为int表示的数值,对应的数组值表示该ascii码在输入字符串中出现的次数
  • 设置一个max变量和id变量,max初值为0,从下标为((int)‘A’)开始遍历sheet数组,找到最大的值赋给max,对应的数组序号赋给id,如果最大的max值为0,表明字符串已经打印完毕了,结束程序。
  • 将((char)id)打印max遍,然后回到第二步

代码——32行极简,比其他题解短10行

#include <iostream>
#include <string.h>
using namespace std;
int main() {char str[1001];while (scanf("%s", str) != EOF) {int length = strlen(str);int sheet[128] = {0};for (int i = 0; i < length; i++) {int index = (int)str[i];sheet[index]++;}while (true) {int max = 0;int id;for (int i = (int)'A'; i < 128; i++) {if (sheet[i] > max) {max = sheet[i];id = i;}}if (max == 0) {break;}for (int i = 0; i < max; i++) {printf("%c", (char)id);}sheet[id] = 0;}printf("\n");}
}

2. 动态查找的问题

在这里插入图片描述

分析——采用hash表

  • 数据总数不超过十万,可以将hash表长设置为十万,采用最简单的线性探测法,一旦发生冲突就往后找

代码

这段代码本来是用vs写的,但是vs这个软件老毛病就是总是觉得你写得不安全,然后不让你编译通过,于是抛弃vs使用dev c++
另外一个让我讨厌的是sql server,珍爱生命,远离ms家的软件。

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//#include <iostream>
using namespace std;
int num[100001];//静态内存区默认的初始值是0int main() {int n;scanf("%d", &n);for (int i = 0; i < n; i++) {int temp;scanf("%d", &temp);int j = 0;while (true) { //线性探测法if (num[(temp + j) % 100000] == 0) {num[(temp + j) % 100000] = temp;break;}j++;}}int m;scanf("%d", &m);for (int i = 0; i < m; i++) {int temp;scanf("%d", &temp);int j = 0;while (true) { //线性探测法if (num[(temp + j) % 100000] == 0) {printf("no\n");num[(temp + j) % 100000] = temp;break;} else if (num[(temp + j) % 100000] == temp) {printf("find\n");break;}j++;}}return 0;
}

3. 分离字符串

在这里插入图片描述

分析

  • 使用if判断条件放入指定数组即可

代码

#include <iostream>
#include <string.h>
using namespace std;char abc[201];//字母
char _12[201];//数字
char spe[201];//符号//将每次放入数组的操作写成一个函数,每次放入字符都在后面放一个结束符'\0',这样方便输出
void operate(char *a, int b, char c) {*(a + b) = c;*(a + b + 1) = '\0';
}int main() {char str[201];while (scanf("%s", str) != EOF) {int p_a = 0, p_1 = 0, p_s = 0;int length = strlen(str);for (int i = 0; i < length; i++) {if (str[i] <= 'z' && str[i] >= 'a' || str[i] <= 'Z' && str[i] >= 'A') {operate(abc, p_a++, str[i]);} else if (str[i] <= '9' && str[i] >= '0' ) {operate(_12, p_1++, str[i]);} else {operate(spe, p_s++, str[i]);}}printf("%s\n%s\n%s\n", abc, _12, spe);}return 0;
}

4. 打印杨辉三角形

在这里插入图片描述

在这里插入图片描述

分析——使用队列构造

  1. 入队一个1
  2. 对行数 i i i 开始遍历,每行的元素数目等于行数 i i i
  3. i i i 行前 i − 1 i-1 i1 个元素循环执行这样的操作:
    • 队首元素值赋temp
    • 然后队首出队,打印temp值
    • temp值加上当前队首值,和入队
  4. i i i 行第 i i i 个元素一定是1,因此直接打印1和一个换行符,同时要将一个1入队

b站视频:【【3.6链队列和队列的应用(包括杨辉三角)-2 考研《数据结构C语言版》严蔚敏知识点讲解】】在49:40处对这一过程进行了手动推导,如果对上面的分析不理解,可以点击链接去听一下讲解。

代码

#include <cstdio>
#include <queue>
using namespace std;int main() {int n;while (scanf("%d", &n) != EOF) {queue<int> tri;tri.push(1);for (int i = 0; i < n; i++) {//行遍历for (int j = 0; j < i; j++) {int temp = tri.front(); //获取队首tri.pop();printf("%d ", temp);temp += tri.front();tri.push(temp);}tri.push(1);printf("1\n");}}return 0;
}

5. 回文数判定

在这里插入图片描述

分析

数字位数都确定是5位了,直接用字符串接住,看看0和4序号、1和3序号的数字是不是一样的就好

代码

#include <cstdio>
#include <queue>
using namespace std;int main() {char num[5];while (scanf("%s", num) != EOF) {getchar();if (num[0] == num[4] && num[1] == num[3]) {printf("Yes\n");} else {printf("No\n");}}return 0;
}

6.求三角形面积

在这里插入图片描述

分析——使用正弦公式计算面积

在这里插入图片描述

代码

#include <cstdio>
#include <queue>
#include <cmath>
using namespace std;struct position {double x;double y;
};
position tri[3];void caculate(double *str) {for (int i = 0; i < 3; i++) {tri[i].x = str[i * 2];tri[i].y = str[i * 2 + 1];}position a, b;a.x = tri[1].x - tri[0].x;a.y = tri[1].y - tri[0].y;b.x = tri[2].x - tri[0].x;b.y = tri[2].y - tri[0].y;double a_length = sqrt(pow(a.x, 2) + pow(a.y, 2));double b_length = sqrt(pow(b.x, 2) + pow(b.y, 2));double cos = (abs(a.x * b.x + a.y * b.y)) / (a_length * b_length);double sin = sqrt(1 - pow(cos, 2));double s = 0.5 * a_length * b_length * sin;printf("%.2lf\n", s);
}int main() {double str[6];while (scanf("%lf", &str[0]) != EOF) {for (int i = 1; i < 6; i++) {scanf("%lf", &str[i]);}caculate(str);}return 0;
}

注意点

  • 所有的数值类型都应该是double,否则会报错
  • 下面这行代码,如果乘法不加括号,会出现错误答案
double cos = (abs(a.x * b.x + a.y * b.y)) / (a_length * b_length);

分析——使用海伦公式计算面积

【海伦公式】
在这里插入图片描述

代码

#include<bits/stdc++.h>
using namespace std;
struct point{double x;double y;
}A,B,C;double len(point a,point b){return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main(){while(scanf("%lf %lf %lf %lf %lf %lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y)!=EOF){double ac = len(A,C);double ab = len(A,B);double bc = len(B,C);double p = (ac+bc+ab)/2;double s = sqrt(p*(p-ac)*(p-bc)*(p-ab));printf("%.2lf\n",s);}
}

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

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

相关文章

海外媒体宣发套餐推广8个要点解析为标题-华媒舍

在当前全球化的时代背景下&#xff0c;海外市场的开拓对于企业的发展至关重要。而海外媒体宣传是一种有效的推广方式&#xff0c;可以帮助企业在全球范围内打开市场。本文将对8个海外媒体宣发套餐的推广要点进行解析&#xff0c;帮助企业了解如何在海外市场进行宣传推广。 1. 媒…

园区水电计量管理系统

园区水电计量管理系统是为工业园区、科技园区等大型综合体设计的一套综合解决方案&#xff0c;主要目的是实现对园区内部水电资源的精确计量、有效管理和公平收费。随着经济的快速发展和产业升级&#xff0c;园区作为产业集聚的重要平台&#xff0c;其能源管理效率直接影响到园…

计算机网络 实验指导 实验8

三层交换机的访问控制 1.实验拓扑图&#xff1a; 名称接口IP地址网关Switch AF0/1192.168.1.1/24F0/2172.1.1.1/24Switch BF0/1192.168.1.2/24F0/2172.2.2.1/24PC1172.1.1.2/24172.1.1.1PC2172.1.1.3/24172.1.1.1PC3172.2.2.2/24172.2.2.1PC4172.2.2.3/24172.2.2.1 2.实验目的…

朝阳大力生物带您探索2024第13届生物发酵展新视野

参展企业介绍 长春市朝阳大力生物技术工程设备有限公司成立于1994年&#xff0c;现是一家涵盖制药领域的纯化水、注射用水、纯蒸汽等工艺系统与配液、发酵、细胞培养、灭活、乳化等设备及管道工程的设计、制造、安装及调试的专业公司&#xff0c;公司引进国外先进的技术和设备&…

【电机控制】FOC电机控制

FOC&#xff08;Field-Oriented Control&#xff0c;磁场定向控制&#xff09;是一种电机控制策略&#xff0c;又称矢量控制&#xff0c;是通过控制变频器输出电压的幅值和频率控制三相直流无刷电机的一种变频驱动控制方法。FOC 的实质是运用坐标变换将三相静止坐标系下的电机相…

对于Redis,如何根据业务需求配置是否允许远程访问?

1、centos8 Redis安装的配置文件目录在哪里&#xff1f; 在 CentOS 8 中&#xff0c;默认情况下 Redis 的配置文件 redis.conf 通常位于 /etc/ 目录下。确切的完整路径是 /etc/redis.conf。 2、redis如何设置允许远程登录 修改redis.conf文件 # 继承默认注释掉的bind配置 # …

RabbitMQ3.13.x之七_RabbitMQ消息队列模型

RabbitMQ3.13.x之七_RabbitMQ消息队列模型 文章目录 RabbitMQ3.13.x之七_RabbitMQ消息队列模型1. RabbitMQ消息队列模型1. 简单队列2. Work Queues(工作队列)3. Publish/Subscribe(发布/订阅)4. Routing(路由)5. Topics(主题)6. RPC(远程过程调用)7. Publisher Confirms(发布者…

微软推出GPT-4 Turbo优先使用权:Copilot for Microsoft 365商业用户享受无限制对话及增强图像生成能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【Qt】:常用控件(一:概述和QWidget核心属性)

常用控件 一.概述二.QWidget核心属性1.enabled&#xff08;是否可用&#xff09;2.geometry&#xff08;设置坐标&#xff09;3.WindTitle&#xff08;窗口标题&#xff09;4.windowIcon1.绝对路径2.qrc机制 5.windowOpacity&#xff08;透明度&#xff09; 一.概述 Widget是Q…

基于巴法云物联网云平台构建可视化控制网页(以控制LED为例)

0 前言 如今大大小小的物联网云平台非常多&#xff0c;但大部分要收取费用&#xff0c;免费的物联网云平台功能则有很多限制使用起来非常不方便。以百度云物联网云平台为例&#xff0c;它的物可视不支持发布主题&#xff0c;等于可视化界面只能作为数据监控而不具备双向通信的…

mysql dublewrite 双写缓存机制

mysql dublewrite 双写缓存机制&#xff0c;像不像主板双bois系统&#xff0c; 在MySQL的InnoDB存储引擎中&#xff0c;当进行数据写操作时&#xff0c;会先将数据写入到内存中的缓冲池&#xff08;Buffer Pool&#xff09;&#xff0c;然后异步刷新到磁盘上的数据文件。为了提…

摆动序列(力扣376)

文章目录 题目前知题解一、思路二、解题方法三、Code 总结 题目 Problem: 376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元…

c++20协程详解(四)

前言 到这就是协程的最后一节了。希望能帮到大家 代码 到这里我们整合下之前二、三节的代码 #include <coroutine> #include <functional> #include <chrono> #include <iostream> #include <thread> #include <mutex> #include <me…

JWT/JWS/JWE

JWT(JSON Web Token)&#xff1a;一种基于JSON格式&#xff0c;用于在Web应用中安全传递用户身份验证和授权信息的标准令牌&#xff0c;可以包含签名(JWS)和加密(JWE)的信息 MacAlgorithm(Message Authentication Code Algorithm)&#xff1a;消息认证码算法 HMAC(Hash-based…

2024/4/1—力扣—两数相除

代码实现&#xff1a; 思路&#xff1a;用减法模拟除法 // 用减法模拟除法 int func(int a, int b) { // a、b均为负数int ans 0;while (a < b) { // a的绝对值大于等于b&#xff0c;表示此时a够减int t b;int count 1; // 用来计数被减的次数// t > INT_MIN / 2:防止…

京东获得JD商品详情 API 接口(jd.item_get)的详细使用说明,包括如何通过该接口获取商品的基本信息,包括名称、品牌、产地、规格参数等

通过调用京东商品详情API接口&#xff0c;开发者可以获取商品的基本信息&#xff0c;如名称、品牌、产地、规格参数等。此外&#xff0c;还可以获取商品价格信息&#xff0c;包括原价、促销价和活动信息等。同时&#xff0c;该接口还支持获取商品的销量、评价、图片、描述等详细…

微信如何识别图片中的文字?3个文字识别技巧分享

微信如何识别图片中的文字&#xff1f;微信识别图片中的文字是一项非常实用的功能&#xff0c;特别是在需要快速提取图片中的信息时。不仅如此&#xff0c;微信识别图片文字的功能也极大地提升了人们的工作和学习效率。在办公场景中&#xff0c;它可以快速将纸质文档、名片、合…

postgresql数据库|数据整合的好工具--Oracle-fdw的部署和使用

概述 Oracle_fdw 是一种postgresql外部表插件&#xff0c;可以读取到Oracle上面的数据。是一种非常方便且常见的pg与Oracle的同步数据的方法 Oracle_fdw 适用场景&#xff1a; Oracle_fdw 是一个开源的 Foreign Data Wrapper (FDW)&#xff0c;主要用于在 PostgreSQL 数据库中…

【PRO3.0 】电子面单模版请求失败问题处理

注意&#xff1a;&#xff1a;改完重启守护进程 1、文件地址&#xff1a;crmeb/services/express/storage/Express.php 行数 202 行左右&#xff0c; 方法名&#xff1a;temp() 如下如图把 POST 改成 GET 2、crmeb/services/HttpService.php 行数&#xff1a;81 行左右 方…

【MySQL】解决修改密码时报错:--skip-grant-tables option

首先我们先了解到为何会出现如上报错&#xff1a; 是因为我们在第一次配置MySQL中的my.cnf时&#xff0c;我们添加了–skip–grant-tables 选项 跳过验证身份的选项 所以&#xff0c;我们第一次登录成功后想要修改密码会出现如下报错&#xff1a; [hxiZ0jl69kyvg0h181cozuf5Z…