原创 圖的遍歷

這裏寫的是無向圖的遍歷方法,BFS與DFS。BFS主要是藉助了一個隊列q,開始時將根結點壓入隊列,並標記爲已訪問,當隊列不爲空時做以下循環:1.輸出隊首結點2.取隊列隊首元素,遍歷n個結點,如果隊首結點與該結點有邊且該結點爲被訪問,將該結

原创 Floyd算法

Floyd算法用於求圖中任意兩點的最短距離。Floyd算法的內涵是遍歷N個結點,對於第k個結點,將k結點作爲中間結點,更新其餘結點的信息:即其餘結點(i)能否通過結點k來縮短與其他結點(j)的距離。Floyd的代碼寫起來非常簡潔,但一直有

原创 1004. Counting Leaves (30)

A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child

原创 1002. A+B for Polynomials (25)

This time, you are supposed to find A+B where A and B are two polynomials.InputEach input file contains one test case.

原创 最簡分數

題目描述給出n個正整數,任取兩個數分別作爲分子和分母組成最簡真分數,編程求共有幾個這樣的組合。輸入描述:每組包含n(n<=600)和n個不同的整數,整數大於1且小於等於1000。輸出描述:每行輸出最簡真分數組合的個數。示例1輸入7 3 5

原创 Dijkstra 算法的幾種變形

Dijkstra用來就最短路徑,在保證最短路徑的條件下,可新增一些其他標尺。1.每個結點擁有點權,在最短路勁的條件下求點權和最大的路勁。2.每條邊新增邊權cost,在最短路徑的條件下求cost和最小的路徑。3.求最短路徑的條數。問題1,3

原创 二叉樹遍歷

#include <iostream> #include <queue> using namespace std; class Node { public: int data; Node *left; Node

原创 單鏈表實現多項式相加

首先用兩個單鏈表儲存兩個多項式,要求輸入的時候按指數降序輸入。新建一個單鏈表res;接着從兩個單鏈表的頭部開始比較;如果指數不相同,將指數較大者接在res後面,同時res鏈表與較大者鏈表的遊標向後移動,並且令res遊標(此時指向剛剛接上的

原创 一些小積累

一些不利用STL庫的方法:(持續更新)1.字符串反轉#include <iostream> #include <string> using namespace std; int main() { string a; in

原创 大數乘法

解決長位數相乘的問題。解決方法是模擬手工計算乘法,即數列式相乘。在計算時,先不處理進位,將結果儲存在一個數組中,待全部計算完成後,做一次進位處理。基本思想如下: 1 2 3

原创 質因數個數

題目描述求正整數N(N>1)的質因數的個數。 相同的質因數需要重複計算。如120=2*2*2*3*5,共有5個質因數。輸入描述:可能有多組測試數據,每組測試數據的輸入是一個正整數N,(1<N<10^9)。輸出描述:對於每組數據,輸出N的質

原创 Prim算法 與 dijkstra算法

有時總將兩者搞混,兩者都是基於貪心策略,且都是將圖中頂點劃分爲兩部分,每次取最小值。在這裏對兩者的算法做一個區分。Prim算法是解決圖的 最小生成樹 問題,在每次循環中,選取一個點在s中,另一個點在V-s中,且兩點權值最小,直到V-s爲空

原创 I wanna go home

題目描述    The country is facing a terrible civil war----cities in the country are divided into two parts supporting diffe

原创 POJ3259----Wormholes

DescriptionWhile exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very

原创 1003. Emergency (25)

As an emergency rescue team leader of a city, you are given a special map of your country. The map shows several scatte