原创 遞歸學習(筆記)

定義:將一個大的問題分解成比較小的,有着相同形式的問題。 條件:(1)必須能夠鑑別出一個簡單情景,並且該情景的答案的容易確定的。             (2)必須能夠確認一個遞歸的分解方式,能夠將問題的複雜實例分解爲更小的,具有相同形

原创 hdu 2086 A1 = ?

有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n). 若給出A0, An+1, 和 C1,

原创 HDU 2088 Sky數

#include<stdio.h> int main() { int n; int temp; while (scanf("%d", &n), n) { int a[3][2] = {10

原创 數正方形

曉萌有一個N×N的的棋盤,中間有N2個正方形的1×1的格子,他隨機在棋盤上撒上一些棋子(假設全部正好落在各個格子裏)。他希望知道,當前的棋盤上有多少個不包含棋子的,由至少四個1×1的格子組成的正方形(正方形之間可以有重疊的部分)。

原创 擴展歐幾里得的學習

1  概述           擴展歐幾里得算法  用來 求解一組x,y,使它們滿足貝祖等式: ax+by =  gcd(a, b) =d(已知a, b, 且該解一定存在)。擴展歐幾里德常用在求解模線性方程及方程組中。 2  歐幾里得算法

原创 廣度優先搜索(bfs)的學習

          bfs中,給定圖 G = (V, E) 和一個 可以識別的源結點 s, bfs對圖G中的邊進行系統性的探索來發現可以從源結點s到達的所有的結點。           該算法始終是講已發現結點和未發現結點之間的邊界,沿其

原创 HDU 2085 核反應堆

剛開始寫時把第0微秒時的初始狀態搞錯了。。。。。。 #include<stdio.h> typedef long long int ll; int main() { ll a[40][2] = {{1, 0}, {3, 1},

原创 hdu 1019 Least Common Multiple

#include<stdio.h> int gcd(int a, int b) { if (a < b) { int x = a; a = b; b = x; }

原创 hdu 2078 複習時間

#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int main() { int t; int n, m;

原创 01揹包的學習

問題描述:           有 n 個重量和價值分別爲 w[i],  v[i] 的物品。從這些物品中挑選出總重量不超過 W 的物品, 所求有挑選方案中價值中價值總和的最大值。          (限制條件:1 <= n <= 100,

原创 hdu 2091 空心三角形

這道題問題出在對於換行的判斷。。。。#include<iostream> using namespace std; int main() {

原创 並查集的學習

1   定義:               並查集是一種用來管理元素分組情況的數據結構,用於處理一些 不相交 集合的合併及查詢問題。其精妙之處在於用樹來表示集合。並規定每棵樹的根節點就是這棵樹所對應的集合的代表元。 2  並查集可高效地進

原创 hdu 1056 HangOver

#include<stdio.h> int main() {     double leng;     double cl;     while(scanf("%lf", &leng), leng)     {         cl

原创 hdu 1097 A hard puzzle (快速冪取模)

#include<stdio.h> int main() { int a, b; while (~scanf("%d%d", &a, &b)) { int ans = 1; int

原创 快速冪的學習

計算 S = a^n : S = a * a * a * a......    = ( ( (a^2)^2)^2)...... n = 2^k1 + 2^k2 + 2^k3...... 例如: 22 = 16+4+2   22的二進制數爲