考研生活day1--王道課后習題2.2.1、2.2.2、2.2.3

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) {//如果表空則輸出errorcout << "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.pswp.cn/diannao/40372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40372.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java項目:基于SSM框架實現的游戲攻略網站系統分前后臺【ssm+B/S架構+源碼+數據庫+畢業論文+任務書】

一、項目簡介 本項目是一套基于SSM框架實現的游戲攻略網站系統 包含&#xff1a;項目源碼、數據庫腳本等&#xff0c;該項目附帶全部源碼可作為畢設使用。 項目都經過嚴格調試&#xff0c;eclipse或者idea 確保可以運行&#xff01; 該系統功能完善、界面美觀、操作簡單、功能…

redhat7.x 升級openssh至openssh-9.8p1

1.環境準備&#xff1a; OS系統&#xff1a;redhat 7.4 2.備份配置文件&#xff1a; cp -rf /etc/ssh /etc/ssh.bak cp -rf /usr/bin/openssl /usr/bin/openssl.bak cp -rf /etc/pam.d /etc/pam.d.bak cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak 3.安裝…

UB9A0全系統全頻高精度板卡性能指標

UB9A0 板卡是基于和芯星通自主研發的新一代射頻基帶及高精度算法一體化 GNSS SoC 芯片—Nebulas Ⅳ開發的全系統全頻點高精 OEM 板卡 &#xff0c;支持 BDS&#xff0c;GPS&#xff0c; GLONASS&#xff0c;Galileo&#xff0c;QZSS&#xff0c;NavIC&#xff0c;SBAS&#xff…

linux c 應用編程定時器函數

在 Linux C 應用編程中&#xff0c;對于多線程編程中的定時器函數使用&#xff0c;通常可以借助 pthread 庫和系統提供的定時器相關的函數來實現。 首先&#xff0c;常見的定時器函數有 setitimer() 和 alarm() 。setitimer() 函數可以更精確地設置定時器&#xff0c;它可以設…

JAVA學習-練習試用Java實現“螺旋矩陣 II”

問題&#xff1a; 給定一個正整數 n &#xff0c;生成一個包含 1 到 n2 所有元素&#xff0c;且元素按順時針順序螺旋排列的 n x n 正方形矩陣 matrix 。 示例 1&#xff1a; 輸入&#xff1a;n 3 輸出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]] 示例 2&#xff1a; 輸入&…

C++標準模板(STL)- 迭代器庫 - 流迭代器- 寫入 std::basic_streambuf 的輸出迭代器(二)

迭代器庫-流迭代器 迭代器庫提供了五種迭代器的定義&#xff0c;同時還提供了迭代器特征、適配器及相關的工具函數。 迭代器分類 迭代器共有五 (C17 前)六 (C17 起)種&#xff1a;遺留輸入迭代器 (LegacyInputIterator) 、遺留輸出迭代器 (LegacyOutputIterator) 、遺留向前迭代…

MySQL環境搭配

下載版本37滴 下載第二個 之后進行安裝 進入安裝界面 next 選擇默認的 進行下一步 安裝成功后&#xff0c;進行一系列配置&#xff0c;成功界面如下&#xff1a; 配置 MySQL8.0 環境變量 如果不配置 MySQL 環境變量&#xff0c;就不能在命令行直接輸入 MySQL 登錄命令。 步…

強烈推薦!12 組超驚艷的 Midjourney 風格提示詞!

前言 Midjourney 的 --sref random 隨機風格功能推出之后&#xff0c;出現了很多對不同代碼生成效果的探索。今天就為大家推薦 12 組我覺得非常驚艷的風格代碼&#xff0c;將它們添加在提示詞中&#xff0c;不需要寫復雜的關鍵詞就能得到高質量的指定風格&#xff0c;并且效果…

CUDA編譯配置中來自 CUDA 12.1.targets 的MSB3721錯誤和核函數調用語法錯誤‘<’解決及可用的代碼示例框架

今天開始整cuda編程處理圖像&#xff0c;好久沒玩cuda&#xff0c;又從小白開始。情況不妙&#xff0c;第一個工程坑不少&#xff0c;記錄一下如下2個重要的錯誤&#xff1a; &#xff08;1&#xff09;來自 CUDA 12.1.targets 的MSB3721錯誤 錯誤 命令““C:\Program Files\N…

Scrapy框架的基本使用教程

1、創建scrapy項目 首先在自己的跟目錄文件下執行命令&#xff1a; PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 項目名 具體執行操作如下&#xff1a;1、創建項目目錄&#xff1a;Scrapy會在當前工作目錄下創建一…

Git 操作總結

1. 安裝、Git 環境配置 1.1 安裝 Git 官方版本可以在 Git 官方網站下載&#xff1a;打開 https://git-scm.com/download/win&#xff0c;選擇相應版本即可。 Git 安裝完成后&#xff0c;可以在開始菜單中看到 Git 的三個啟動圖標&#xff08;Git Bash、Git CMD、Git GUI&…

koa導出數據為csv文件給前端下載

后端代碼 async userActivityExport(ctx) {const limit ctx.query.limit || 2const offset ctx.query.offset || 0const UserActivity ctx.module.db().entity(userActivity)const findOption {}const ret await UserActivity.findMany_(findOption)const firtCol Objec…

QT5.12環境搭建與源碼編譯

一、概述 QT版本&#xff1a;QT5.12.10 Qt網址&#xff1a;http://download.qt.io/archive/qt/ 編譯平臺 ubuntu18.04 二、安裝交叉編譯工具鏈 1、獲取交叉編譯工具鏈 一般如果是編譯系統如果有對應的gcc 就是用這個就可以了 比如rk3128 lin…

【Qt】QTableWidget設置可以選擇多行多列,并能復制選擇的內容到剪貼板

比如有一個 QTableWidget*m_tbwQuery m_tbwQuery->installEventFilter(this); //進行事件過濾處理//設置可以選擇多行多列 m_tbwQuery->setSelectionMode(QAbstractItemView::MultiSelection); m_tbwQuery->setSelectionBehavior(QAbstractItemView::SelectItems); …

字符串相似度算法完全指南:編輯、令牌與序列三類算法的全面解析與深入分析

在自然語言處理領域&#xff0c;人們經常需要比較字符串&#xff0c;這些字符串可能是單詞、句子、段落甚至是整個文檔。如何快速判斷兩個單詞或句子是否相似&#xff0c;或者相似度是好還是差。這類似于我們使用手機打錯一個詞&#xff0c;但手機會建議正確的詞來修正它&#…

如何為老化的汽車鉛酸電池充電

一項小研究表明&#xff0c;汽車鉛酸電池不同于深循環或固定電池。汽車電池旨在限度地提高啟動電流容量&#xff0c;并且對深度放電或浮充(也稱為第 3 階段充電循環)反應不佳。起動電池的極板結構使表面積化&#xff0c;并且電解液比重 (SG) 高于其他電池&#xff0c;以提供高啟…

C# 實現位比較操作

1、目標 對兩個字節進行比較&#xff0c;統計變化位數、一位發生變化的位數、二位發生變化的位數、多位發生變化的位數。 2、代碼 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…

php 跨域問題

設置header <?php $origin isset($_SERVER[HTTP_ORIGIN])? $_SERVER[HTTP_ORIGIN]:;$allow_originarray(http://www.aaa.com,http://www.bbb.com, ); if( $origin in $allow_origin ){header("Access-Control-Allow-Origin:".$origin);header("Access-Co…

Electron Forge 打包更改打包后圖片

確認 ICO 文件有效 確保 icon.ico 文件是有效的并且包含多種分辨率的圖標&#xff08;如 16x16, 32x32, 48x48, 256x256&#xff09;。可以使用工具如 icoconverter 來生成有效的 ICO 文件。 https://icoconvert.com/確認圖標文件路徑 確保圖標文件路徑正確并且文件存在。 確…

O2OA(翱途) 開發平臺之HTTP端口規劃

O2OA(翱途) 開發平臺[下稱O2OA開發平臺或者O2OA]采用相對靈活的系統架構&#xff0c;支持三種服務器運行的方式。本篇主要闡述合并服務運行獨立服務運行代理端口運行三種服務器運行方式。 一、先決條件&#xff1a; 1、O2Server服務器正常運行&#xff0c;系統安裝部署請參考文…