原创 回溯法
回溯法有“通用的解題法”之稱。用它可以系統地搜索一個問題的所有解或任一解。 回溯法是一個既帶有系統性又帶有跳躍性的算法。回溯法以深度優先方式系統搜索問題解,適用於組合數較大的問題。 具有限界函數的深度優先生成法成爲回溯法。 用回溯法解題
原创 動態規劃算法的基本要素
最優子結構性質和子問題重疊性質是該問題可用動態規劃算法求解的基本要素: 1.最優子結構 當問題的最優解包含了其子問題的最優解時,稱該問題具有最優子結構性質。問題的最優子結構性質提供了該問題可用動態規劃算法求解的重要線索。
原创 Scanner的常用方法
1.hashNext() 判斷輸入中是否有下一個標記,返回boolean型變量。 2.next() 查找並返回下一個完整的標記,返回String型變量。 3.nextLine() 此方法返回當前行的其餘部分,不包括結尾處
原创 巧妙利用數組下標
int[] count = new int[10000]; for(int i =0; i < N; ++1){ ++count[scanner.nextInt()]; } 這段程序可以實現統計輸入的一段數字中,每一個數字出現
原创 算法基本概念
所謂算法,就是解決問題的一種方法或一個過程。具體來講,算法是由若干指令組成的有窮序列。算法概念並不是計算機學科獨有的概念,生活到到處可見算法的應用。 算法要滿足4條性質: 1.輸入 2.輸出 3.確定性 4.有限性 複雜性: 時間複雜
原创 遞歸與迭代的區別與聯繫
遞歸算法,簡而言之就是一種函數調用函數自身來完成算法設計的方法。 迭代算法是用計算機解決問題的一種基本方法。它利用計算機運算速度快、適合做重複性操作的特點,讓計算機對一指令進行重複執行,在每次執行這組指令時,都
原创 利用Map實現統計一組數字(字母)中每個數字(字母)出現的次數
Map的基本操作——put、get、containsKey、containsValue、size以及isEmpty import java.util.*; public class Freq{ public sta
原创 數據結構的重要性
用計算機解決實際問題,首先要做的事情就是要把涉及問題的相關信息存儲到計算機中,也就是需要把問題的信息表示爲計算機可接受的數據形式,然後根據問題處理功能的要求,對存儲到計算機中的數據進行處理。歸結爲一句話,用計算機解題首先要用
原创 遍歷二叉樹
定義:二叉樹的遍歷是指從根結點出發,按照某種次序依次訪問二叉樹中所有節點,使得每個節點被訪問一次且僅被訪問一次。 二叉樹的遍歷方式有很多,按照從左到右的習慣方式,主要有四種: 1、前序遍歷 先訪問根結點,然後前序訪問左子樹,再前序遍歷右子
原创 Java集合類總結
LinkedList Quene Deque ArrayDeque PriorityQueue Set SortedSet HashSet TreeSet Map SortedMap TreeMap HashMap
原创 關於c++的inline關鍵字
C++中支持內聯函數,其目的是爲了提高函數的執行效率,用關鍵字inline放在函數定義的前面即可將函數指定爲內聯函數,內聯函數通常就是將它在程序中的每個調用點“內聯地”展開,比如下面這個內聯函數:inline int testInline
原创 Python裝飾器
Python裝飾器: 裝飾器本身是一個Python函數,它可以讓其他函數在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返回值也是一個函數對象。它經常用於有切面需求的場景,比如:插入日誌、性能測試、事務處理、緩存、權限校驗等場景。裝飾
原创 字符串的模式匹配
簡單模式匹配算法: 對主串的每一個字符作爲子串開頭,與要匹配的字符串進行匹配。對主串做大循環,每個字符開頭子串長度的小循環,直到匹配成功或全部遍歷完成爲止。 版本一: /* * 簡單模式匹配算法 * 輸入主串和子
原创 Java數據類型轉換——數值型
Java數值型數據類型由低級到高級排序爲:byte->short->int->long->float->double 1、低級到高級的自動類型轉換 低級變量可以直接轉換成高級變量。 2、高級到低級的強制類型轉換 強制轉換如:byte b