題目:p215 尋找不能被[2,31]中連續兩個數整除,但能被其它數整除的數long long GCD(long long a, long long b){ if (b == 0) return a; return GCD(b, a%b);}long long LCM(long long a, long long b){ return a*b/GCD(a,b);}long long FindNumber(){ long long lcm=2;
#include <iostream>#include <vector>#include <iterator>#include <algorithm>struct Area { Area():x(0), y(0) {} Area(int a, int b):x(a),y(b){} int x,y; bool operator<(const Area &rhs) { return x<rhs.x; } //
題目:知道一棵二叉樹的前序序列、中序系列,列印出它的後序系列下面演算法的時間複雜度:O(n^2) -- 最壞情況就是左單支樹/* Kown the preorder listing and the inorder listing of a tree, print it's postorder listing*/void PrintPostOrder(const char *pre, int s1, int e1, const char *in,
1 求三角形面積知道三角形三個頂點座標,可以求三角形三條邊長的長度,進而可以求出三角形的面積。海倫公式:假設三角形3條邊長分別為a, b, c. p = (a + b + c) /2那麼面積 s = sqrt( (p-a) * (p-b) * (p-c) * p );該公式的用途:可以用來計算面積,避免昂貴的三角Function Compute。用來判斷一個點是否在三角形內部。2 判斷一個點是否在三角形內如,可以通過比較三角形ABC的面積(S1)與三角形ABD, ACD, BCD面積之和(S2)
提交了N次,還是TLE。鬱悶~~ 事實證明要選C++ 無語#include <stdio.h>#include <stdlib.h>inline void swap(int *a, int i, int j){ int temp; temp = a[j]; a[j] = a[i]; a[i] = temp;}//找比k大的最小數 前提:a[b...e]是倒序的 並且總是存在一個比k大的數int find(int *a, int b, int
隨機產生[s,e]之間互不相同的m個整數這樣考慮:從n(e-s+1)個整數取m個數,那麼每個數取到的機率是m/n。怎麼應用這一點呢?可以這樣:隨機產生[1,n]之間的一個整數,如果這個數小於等於m就表示滿足了m/n的機率,即機率m/n的事件發生了。數學上的證明大概是很繁瑣吧,不懂~~~代碼實現如下://隨機產生[s, e]之間的m個互不相同的數,並放存入p[]中void GetRandomNum(int *p, int s, int e, int m){ assert(p);