原创 工作時間片問題

問題描述: 輸入: 客戶名:start/end:作業號(唯一):開始時間 輸出: 客戶名:佔用時間片個數 (按客戶名遵循先來先輸出) 代碼: #include <iostream> #include <vector> #incl

原创 c++高效實現並查集

C++實現並查集 題意:輸入n,m。分別代表n個節點和m個節點連接,接下來m行,每行兩個數,代表兩個節點相連。節點編號從1-n,請判斷所有節點的組成的集合的個數。 思路: 典型的連通圖問題,題意就是求所有節點的連通圖的個數。可通過

原创 1到n的的最小公倍數

代碼: #include <iostream> #include <string> #include <vector> using namespace std; static const int N = 100; stati

原创 超長浮點數大數相乘

代碼: #include <iostream> #include <string> #include <vector> using namespace std; static string BigMulti(string &a

原创 圖的寬度優先遍歷非遞歸實現——C++

思路: 用隊列實現圖的非遞歸BFS。首先把遍歷起始頂點push進隊列;然後每次從隊列中pop一個頂點時,都遍歷此頂點,並遍歷邊表,找出與此頂點相連接的頂點,若此連接頂點未被訪問,則入隊,若此頂點已被訪問,則繼

原创 圖的深度優先遍歷非遞歸實現—C++

思路: 利用棧非遞歸實現深度優先遍歷(DFS)圖。先把起始頂點訪問併入棧;然後每次取棧頂元素,找到一個與棧頂頂點連接並且未被訪問的頂點,隨即訪問此頂點,並將此頂點入棧;直到某一頂點沒有出邊(針對有向圖)或者所有連

原创 圖的非遞歸深度優先遍歷——C++實現

思路: 用隊列實現圖的非遞歸BFS。首先把遍歷起始頂點push進隊列;然後每次從隊列中pop一個頂點時,都遍歷此頂點,並遍歷邊表,找出與此頂點相連接的頂點,若此連接頂點未被訪問,則入隊,若此頂點已被訪問,則繼續,直到

原创 堆排序

思路:以最大堆爲例,建立堆,交換堆頂元素與最後一個爲唄排序元素,直至序列全部有序。 代碼: #include <iostream> #include<vector> using namespace std; void swap1(ve

原创 二叉樹的層序遍歷

思路: 使用隊列實現二叉樹的層序遍歷,先把root節點入隊,然後每次從隊列刪除一個節點,都訪問此節點,並把節點的左右子節點入隊,直至隊列爲空。層序遍歷結束。 代碼: #include <iostream> #inc

原创 查看數組中最小的n個數

思路:找出前n個數最大的值,每次遇到比最大值小的數,交換數值,並重新確定前n個數中的最大值。 代碼: #include <iostream> #include<vector> using namespace std; void swa

原创 二叉樹尋路

1. 題目:輸入一個整數和一棵二元樹。從樹的根結點開始往下訪問一直到葉結點所經過的所有結點形成一條路徑。打印出和與輸入整數相等的所有路徑。 思路:典型的揹包問題。二叉樹數據結構可採用順序存儲方式,對於非完全二叉樹,採用補0的方式構成順序數

原创 C++迭代器失效問題

迭代器失效: 1、對於在內存中連續分佈的容器(vector、queue、deque),插入或者刪除會使插入或者刪除點的迭代器以及之後的迭代器失效。 2。對於非連續存儲的容器(list,forword_list,map),插入或刪除僅僅

原创 歸併排序

代碼: #include <iostream> #include<vector> using namespace std; void merge_two_arr(vector<int> &a,int l1,int h1,int l2,

原创 多字符串重構

問題描述: 第一行輸入n和m,代表n個字符串,每個字符串長度爲m;接下來n行爲長度爲m的n個字符串,n個字符串構成集合A。 從任意字符串中選取第一個字符爲

原创 C++實現圖的鄰接矩陣

代碼: #include <iostream> #include<vector> using namespace std; typedef int T; //頂點的值類型 int, char, d