考研生活day1--王道课后习题2.2.1、2.2.2、2.2.3

news2025/1/18 4:28:42

2.2.1

题目描述:

解题思路:

·这是最基础的操作,思路大家应该都有,缺少的应该是如何下笔,很多同学都是有思路但是不知道如何下笔,这时候看思路的意义不大,可以直接看答案怎么写,最好可以直接背下来,等熟悉了代码操作再进行书写也不迟

·言归正传,我们只需要写一个循环找到其中最小元素,以及最小元素所在下标,再用末尾元素对其覆盖即可,最后不要忘记了要对表的长度减一

*基础比较好的同学可以直接看外部的Del_Min函数,而基础一般的同学也可以看我在注释中写的Del_Min函数,注释中是我根据王道书中的答案根据C++语法进行修改的(因为C语言太过严谨且繁琐了)

代码如下

#include <iostream>
#include <vector>

using namespace std;

void PrintArray(vector<int> v) {
    for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
        cout << *it << '\t';
    }
    cout << endl;
}
/*
void Del_Min(SQList& L, Element e) {
    if (L.length() == 0) {//如果表空则输出error
        cout << "error!" << endl;
        return;//函数结束
    }
    int minn = INT_MAX;//INT_MAX为C++中用法定义minn为int类型所能表达的最大整数
    int pos = 0;//定义一个中间变量用于存放最小数据所在的位置
    for (int i = 0; i < L.length(); i++) {
        if (L[i] < minn) {
            minn = L[i];
            pos = i;
        }
    }
    L[pos] = L[length() - 1];//将最后的数字放在最小的数字的位置上
    L.length--;//千万不要忘记长度减一,这是很容易遗忘的一点
}
*/
void Del_Min(vector<int>& v, int& min_value) {
    if (v.empty()) {//判断表空
        cout << "顺序表为空" << endl;
        return;
    }

    min_value = v[0];
    int min_pos = 0;//定义中间变量确定最小数据所在位置
    for (int i = 1; i < v.size(); i++) {
        if (v[i] < min_value) {
            min_value = v[i];
            min_pos = i;
        }
    }
    v[min_pos] = v[v.size() - 1]; //将最后一个元素填补至最小元素位置
    v.pop_back();//取出数组末尾最后的一个元素,在这里等价于长度减一也就是L.length-1
}



int main()
{
    vector<int> v = { 6,3,4,5,8,9 };
    int min_value;
    PrintArray(v);
    Del_Min(v, min_value);
    cout << "数组最小值为:" << min_value << endl;
    PrintArray(v);
}


运行结果


2.2.2

题目描述

解题思路:

·最基本的思路就是找一个临时变量,将前半部分的变量存入临时变量,再将后半部分变量存入前半部分变量,最后将临时变量中存入后半部分变量中,这样就完成了数据交换,这样说可能有点懵逼,用代码表示就是

temp = L.data[i];
L.data[i] = L.data[length-i-1];
L.data[Length-i-1] = temp;

这个思路一定要会,因为以后一定还会遇到

·在这里我提供一个更好的思路,可以直接调用swap()函数,这样就轻松实现数据交换了

*注释中的为书上答案修改后答案,基本思想未变,可运行代码为我取巧的方法

代码如下:

#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

void Reverse(vector<int> &v) {
	int l = 0, r = v.size() - 1;
	while (l <= r) {
		swap(v[l], v[r]);//交换v[l],v[r]数据
		l++, r--;
	}
}

/*
void Reverse(vector<int>& v) {
	for (int i = 0; i < v.size() / 2; i++) {
		int temp = v[i];
		v[i] = v[v.size() - 1 - i];
		v[v.size() - 1 - i] = temp;
	}
}
*/

void GenerateData(vector<int>& v, int n) {
	srand(time(NULL));

	for (int i = 0; i < n; i++) {
		v.push_back(rand() % 100 + 1);
	}
}

void PrintArray(vector<int> v) {
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << '\t';
	}
	cout << endl;
}

int main() {
	vector<int> v;
	GenerateData(v,10);
	PrintArray(v);
	Reverse(v);
	PrintArray(v);

}

运行结果


2.2.3

题目描述

解题思路

·一开的思路是遍历整个表,如果值相等,那么就将元素删除,再将表前移,但是这样会复杂一些,使用课后答案的思路会更简单,如果遍历到的值不相等,那就继续遍历,相等的值会被自动覆盖掉,就会简单且易懂一些

代码如下:

#include <iostream>
#include <vector>
#include <ctime>

using namespace std;


void Del_x(vector<int>& v, int x) {
	int k = 0;
	for (int i = 0; i < v.size(); i++) {
		if (v[i] != x) {//如果当前的值不等于x,就把他赋值到k位置,然后k++,也就是k的位置后移
			v[k++] = v[i];
		}
	}
	v.erase(v.begin() + k, v.end());//删除k后所有元素
}


void GenerateData(vector<int>& v, int n) {
	srand(time(NULL));

	for (int i = 0; i < n; i++) {
		v.push_back(rand() % 100 + 1);
	}
}

void PrintArray(vector<int> v) {
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << '\t';
	}
	cout << endl;
}

int main() {
	vector<int> v;
	GenerateData(v,10);
	PrintArray(v);
	Del_x(v,2);
	PrintArray(v);

}

运行结果

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

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

相关文章

关于内存和外存文件不同字符集下占用空间大小问题

关于内存和外存不同字符集下文件占用空间大小问题 存储&#xff08;外存&#xff09;的文件中的字符&#xff1a; ASCII&#xff1a;每个字符占用1个字节&#xff0c;用来存储英文字符和常用标点符号。ISO-8859-1&#xff1a;每个字符占用1个字节&#xff0c;向下兼容ASCII。G…

【代码随想录】【算法训练营】【第53天】 [739]每日温度 [496]下一个更大元素I [503]下一个更大元素II

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 48&#xff0c;周六&#xff0c;不能再坚持~ 题目详情 [739] 每日温度 题目描述 739 每日温度 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 [496] 下一…

【一篇搞懂】操作系统期末大题:进程同步与互斥 PV操作

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、正文&#xff1a;☀️☀️☀️题型一&#xff1a;利用信号量实现前驱关系题型二&#xff1a;利用信号量实现资源同步与互斥 一、前言&#x1f680;&#x1f680;&#x1f680; 本文简介&#xff1a;这是一篇基于b…

Pycharm常用快捷键整理

1&#xff0c;格式化代码 【ctrlAltL】 写代码的时候会发现有很多黄色的波浪号&#xff0c;这个时候可以点击任意黄色波浪号的代码&#xff0c;然后按下【Ctrl Alt L】进行代码格式化 2&#xff0c;快速往返 ctrll Alt ⬅ &#xff0c;表示查看上一步调用函数位置&#xff0…

Redis 7.x 系列【9】数据类型之自动排重集合(Set)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 前言2. 常用命令2.1 SADD2.2 SCARD2.3 SISMEMBER2.4 SREM2.5 SSCAN2.6 SDIFF2.7 SU…

华为OD机试 - 启动多任务排序 - 拓扑排序(Java 2024 D卷 200分)

华为OD机试 2024D卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;D卷C卷A卷B卷&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测…

如何做好一个企业家IP:塑造独特的个人品牌

在当今数字化时代&#xff0c;个人品牌的力量愈发凸显&#xff0c;对于企业家而言&#xff0c;一个强大的IP&#xff08;Intellectual Property&#xff0c;即知识产权或个人品牌&#xff09;不仅有助于提升个人影响力&#xff0c;还能为企业的发展注入强大动力。那么&#xff…

BGE M3-Embedding 模型介绍

BGE M3-Embedding来自BAAI和中国科学技术大学&#xff0c;是BAAI开源的模型。相关论文在https://arxiv.org/abs/2402.03216&#xff0c;论文提出了一种新的embedding模型&#xff0c;称为M3-Embedding&#xff0c;它在多语言性&#xff08;Multi-Linguality&#xff09;、多功能…

Feign 原理流程图练习-01

目录 作业: 老师给的参考流程图 要求 解答 知识扩展 Feign基础原理 接口定义 代理对象生成 请求调用 请求发送 响应处理 容错与熔断 总结 作业: 老师给的参考流程图 pdf版本 【金山文档 | WPS云文档】 Feign https://kdocs.cn/l/ctbagIyxN348 ​ 要求 结合上面…

[C++][设计模式][状态模式]详细讲解

目录 1.动机2.模式定义3.要点总结4.代码感受1.代码一2.代码二 1.动机 在软件构建过程中&#xff0c;某些对象的状态如果改变&#xff0c;其行为也会随之而放生变化 比如文档处于只读状态&#xff0c;其支持的行为和读写状态支持的行为就可能完全不同 如何在运行时根据对象的状…

STM32 SWD烧写

最小电路 stm32f103x 内部已经集成了振荡电路&#xff0c;可以省略&#xff1b;rst引脚电路&#xff0c;可以省略&#xff0c;boot0,boot1不需要设置 正常烧录 -------------------------------------------------------------------STM32CubeProgrammer v2.9.0 …

antd Select前端加模糊搜索

背景&#xff1a;前端的小伙伴经常在开发antd Select的时候后端不提供搜索模糊搜索接口&#xff0c;而是全量返回数据&#xff0c;这个时候就需要我们前端自己来写一个模糊搜索了。 效果 代码截图 代码 <SelectshowSearchmode"multiple"options{studioList}filte…

读AI新生:破解人机共存密码笔记17不确定性和概率

1. 前向搜索 1.1. 通过前向搜索&#xff0c;通过考虑各种可能的动作序列的结果&#xff0c;来选择动作&#xff0c;是智能系统的基本能力 1.2. 如果一家卡车运输公司想要优化其100辆卡车在美国的运输&#xff0c;那么该公司可能需要考虑的状态数量将是10^700个 1.3. 几乎所有…

leetcode 第133场双周赛 100333.统计逆序对的数目【计数dp/滚动数组/前缀和优化】

分析&#xff1a; 先考虑如下问题。 求长度为n&#xff0c;逆序对为m的排列数量。 可以考虑dp&#xff0c;dp[i][j]定义为长度为i&#xff0c;逆序对为j的排列数量。 dp[1][0] 1; //枚举排列长度&#xff0c;或者认为枚举当前需要插到长度为i-1的排列中的数字 for(int i 1…

Mini-Contract电子合同在线签署小程序源码

Mini-Contract电子合同在线签署小程序源码&#xff0c;采用的是uniapp Vue3框架搭建&#xff0c;只有前端源码是一个聚合市场上各类电子合同解决方案商的工具&#xff0c;让用户无需一个个对接电子合同厂商&#xff0c;节省时间和精力。该程序提供了简洁的代码和最新的技术栈&a…

C++ | Leetcode C++题解之第208题实现Trie(前缀树)

题目&#xff1a; 题解&#xff1a; class Trie { private:vector<Trie*> children;bool isEnd;Trie* searchPrefix(string prefix) {Trie* node this;for (char ch : prefix) {ch - a;if (node->children[ch] nullptr) {return nullptr;}node node->children[…

现代信息检索笔记(二)

目录 信息检索概述 IR vs数据库: 结构化vs 非结构化数据 结构化数据 非结构化数据 半结构化数据 传统信息检索VS现代信息检索 布尔检索 倒排索引 一个例子 建立词项&#xff08;可以是字、词、短语、一句话&#xff09;-文档的关联矩阵。 关联向量 检索效果的评价 …

【IVI】car_service 命令行工具

【IVI】car_service 命令行工具 1、car_service服务执行2、CarShellCommand命令执行2.1 cmd car_service day-night-mode day设置白天模式2.2 cmd car_service inject-vhal-event vhal信号事件2.2.1 VehiclePropertyIds2.2.2 模拟驾驶事件 2.3 cmd car_service inject-error-ev…

STM32MP135裸机编程:使用软件触发硬件复位

0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线&#xff1a; 通过这条路线可以清楚看到&#xff0c;我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL&#xff08;复位脉冲控制器&#xff09;给NRST&#xff08;硬件复…

hmall-服务保护和分布式事务

1. 微服务保护 1.1 服务保护方案 1.1.1 请求限流 服务故障最重要原因&#xff0c;就是并发太高&#xff01;解决了这个问题&#xff0c;就能避免大部分故障。当然&#xff0c;接口的并发不是一直很高&#xff0c;而是突发的。因此请求限流&#xff0c;就是限制或控制接口访问…