原创 HDU1548 A strange lift 廣搜 + 最短路

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=1548 題目大意:一個很奇怪的升降機,它有兩個按鈕UP和DOWN,給你一些數i表示層數,並且每層對應的Ki,如果按UP按鈕,會從第i層升到第i

原创 大數加法的字符串實現

#include<iostream> #include <string.h> #include <stdio.h> using namespace std; char s1[200],s2[200],sum[210]; void ad

原创 HDU3448 Bag Problem 01思想+深搜

題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=3448 題目大意: Problem Description 0/1 bag problem should sound familiar to

原创 二叉樹的前序,中序,後序遍歷 遞歸實現

前序遍歷: #include <iostream> using namespace std; struct TreeNode { int value; TreeNode* left; TreeNode* righ

原创 poj3984迷宮問題 廣搜+最短路徑

絕對經典! 定義一個二維數組:  int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0, }; 它表示一個迷宮,其

原创 二叉樹 前序,中序,後序遍歷 --非遞歸遍歷

前序遍歷: #include <iostream> #include <stack> using namespace std; struct TreeNode { int value; TreeNode* left;

原创 C++ sort與qsort的比較

qsort:快速排序 sort:快速排序的優化版 而且qsort的比較函數的參數需要轉換類型,並且用'-'進行比較,所以一般用sort 代碼: #include <iostream> #include <algorithm>

原创 並查集-判斷無向圖是否存在環

並查集是一種樹型的數據結構,用於處理一些不相交集合(Disjoint Sets)的合併及查詢問題。常常在使用中以森林來表示。集就是讓每個元素構成一個單元素的集合,也就是按一定順序將屬於同一組的元素所在的集合合併。 Find:確定元素屬

原创 C++ 堆排序

1 堆    1.1 簡介 n個關鍵字序列Kl,K2,…,Kn稱爲(Heap),當且僅當該序列滿足如下性質(簡稱爲堆性質): (1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n),當然,這是小根堆,大根堆則換成>=號。//

原创 深入分析C++中char * 和char []的區別

問題引入:在實習過程中發現了一個以前一直默認的錯誤,同樣char *c = "abc"和char c[]="abc",前者改變其內 容程序是會崩潰的,而後者完全正確。 程序演示: 測試環境Devc++ 代碼運行結果 2293628 4

原创 C++中cin、cin.get()、cin.getline()、getline()、gets()等函數的用法

1、cin  2、cin.get()  3、cin.getline()  4、getline()  5、gets()  6、getchar() 附:cin.ignore();cin.get()//跳過一個字符,例如不想要的回車,空格

原创 喝汽水

題意: 1元錢可以喝一瓶汽水,2個空瓶可以換一瓶汽水,問n元可以喝多少瓶汽水? code: #include <iostream> using namespace std; int main() { int n; ci

原创 蛇形矩陣

題意: 給出N,要求按如下形式打印出N*N的矩陣: 1     2    3   4 12  13 14  5 11  16 15  6 10   9    8   7 code: #include <cstdio> #incl

原创 poj--1703 二分圖判斷

題目鏈接:http://poj.org/problem?id=1703 題目大意:意思就是要把嫌疑犯分成兩個團伙。其實這道題就是求給的一個圖是不是二分圖。。。。 code: //CODE: POJ_1703 652K 516MS #i

原创 迴文字符串整理

定義兩個指針,從兩頭開始同時向中間掃描字串: bool IsPalindrome(const char* s, int n) { if(s == 0 || n < 1) return false; char *front, *back