Time of Update: 2018-12-05
1. 簡述 對於一個由N個正數組成的數組,需要比較多少次才能把最大值和最小值找出來?2. 思路 1) 就是遍曆一遍,分別統計最大值和最小值,2*N。 2) 每次遍曆兩個數字,比較一下這兩個數字,大的數字更新最大值,小的數字更新最小值,一共是N/2次,每次比較3次,一共就是3*N/2次比較。
Time of Update: 2018-12-05
原帖:http://blog.csdn.net/jcwKyl/archive/2008/04/21/2311112.aspx(我做了部分摘錄) 1.可以使用 #pragma pack 指令來指定對齊位元組,該指令指定記憶體對齊位元組的功能和編譯器選項 /Zp 是等效的。2.#pragma指令對該指令之後的 struct 或 union 的聲明有效。如果把這條指令放在介於資料結構的聲明後面和這些資料結構的執行個體的定義前面,則不起任何效果。3.在使用了 #pragma pack(n)
Time of Update: 2018-12-05
這題只不過把王曉東書上求最小連乘次數改為了求最大連乘次數,方法還是DP狀態轉移方程:m[i][j] = Max(m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j]) Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <stdio.h>#define N 11int m[N][N]
Time of Update: 2018-12-05
看到這題,第一時間就聯想到了求二叉樹深度(通過分別求左右子樹的深度,然後合并(取最大值加1)從而得到了根節點的深度(其實就是分治思想))代碼如下:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->int Depth(Node *p){int l_d , r_d;if(p == NULL) {return 0; } l_d =
Time of Update: 2018-12-05
http://acm.tzc.edu.cn/acmhome/problemdetail.do;jsessionid=558B14243DB112F263306E7D3741A8A9?&method=showdetail&id=1052在《編程之美》看過這題,中間利用二分尋找可以把複雜度從O(N^2)降低到O(NlogN) Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-05
1.輸出二叉樹某一層結點(從左至右)把輸出二叉樹第K層結點轉換成:分別輸出"以該二叉樹根結點的左右子樹為根的兩棵子樹"中第K-1層結點。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void PrintNodeAtLevel(Node *root , int level){if(!root || level < 0)return
Time of Update: 2018-12-05
整數劃分問題和正整數連續劃分問題:http://www.cnblogs.com/nokiaguy/archive/2008/05/11/1192308.html講的很細緻放蘋果問題:把m個蘋果放到n個盤子裡,允許有空,有多少种放法http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2679 遞迴方程:f(m,n) = f(m,n-1) + f(m-n,n) //每次分有兩種分法f(m,n-1):
Time of Update: 2018-12-05
1. 簡述 有一個無序、元素個數為2n的正整數數組,要求:如何能把這個數組分割為元素個數為n的兩個數組,並使兩個子數組的和最接近?例如有如下數組,1,5,7,8,9,6,3,11,20,17。應該分割為1,3,11,8,20和5,7,9,6,17。2. 思路 方法一,暴力搜尋,遍曆每種分組方法,一共C(2N, N)種組合,複雜度是(2N!/N!),複雜度過高。
Time of Update: 2018-12-05
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1944這道題是練習遞迴並深刻理解二叉樹遍曆的好題目(編程之美上也有) Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <stdio.h>#include
Time of Update: 2018-12-05
1. 簡述 給定一個源區間[x,y] (y>=x)和N個無序目標區間[x1,y1][x2,y2][x3,y3]...[xn][yn],判斷[x,y]是否在目標區間內。2. 思路 這個比較簡單,合并目標區間,判斷源區間是否在目標區間內即可。具體過程如下: 第一步,先把目標區間排序。
Time of Update: 2018-12-05
1.刪除指定字元這是《The C programming language》中的一個例子,寫的很巧妙(比我自己當時想的好多了),原地刪除,沒有多用額外的儲存空間。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->void squeeze(char *s , int c){int i , j;for(i = j = 0 ; s[i] ; i++)
Time of Update: 2018-12-05
1. 簡述 任意給定一個正整數N,求一個最小的正整數M(M>1),使得N*M的十進位表示形式裡只含有1和0。 比如N=99時,M=1 122 334 455 667 789,N * M=111 111 111 111 111 111。2. 思路 實際上兩個思路,一個就是給N,遍曆M,判斷N*M是否滿足條件的數值;另一個就是給N,遍曆滿足條件的數值,判斷數值能否被N整除。根據範例資料發現,N=99時,第一個方法的複雜度為:M=1 122 334 455 667
Time of Update: 2018-12-05
王曉東書上的例子,但是我做了最佳化並沒有使用f2[]數組,只是簡單的用了一個f2和last變數。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include <stdio.h>int x[4] , f1 , f2 , f , bestf , n = 3;int m[4][3] = { {0 , 0 , 0}, {0 , 2
Time of Update: 2018-12-05
1. 題目 #include<iostream>using namespace std;class S {};class A:S {virtual void fun() { ; }};class B:A {virtual void fun() { ; }};class C:B {virtual void fun() { ; }};class M {virtual void fun() {}};class N {virtual void fun() {}};
Time of Update: 2018-12-05
這幾天在網上看了很多關於線段樹和樹狀數組的資料,感覺是很重要的資料結構,有必要邊學邊做下記錄。1.線段樹凡是關於線段樹的資料,我想都有這麼一張圖,的確,它給了人最初的感性認識,其次這幅圖在以後分析問題時也很有協助: 線段樹的基本操作(由於線段樹是一棵完全二叉樹,且每條線段以類似“二分”的方法處理,因此時間複雜為O(logN)):Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2018-12-05
1. 簡述 斐波那契數列的遞迴公式為:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2), n>1。儘可能快的計算f(n)。2. 思路 一個就是公式解,算特徵方程的方法,好像是線性代數部分的,有點忘了,這裡直接給答案吧:根據遞迴公式,f(n)=f(n-1)+f(n-2),知道f(n)的特徵方程為 x*x = x + 1,根為s1=(1+sqrt(5))/2 和s2=(1-sqrt(5))/2。那麼存在A,B使得:f(n)=A*s1^n + B*s2^n,代人f(0
Time of Update: 2018-12-05
1. 解決實際問題 通過幾個執行個體說明Regex是十分有用的: · 檢查許多檔案,確保每一行中的"SetSize"的出現次數與"ResetSize"的出現次數一樣多,而且要保證大小寫不敏感。 · 處理遠端機器上的某些E-mail,把郵件的標題作為列表整理出來。使用了grep工具和Regex"^(From|Subject)" · 尋找一個特殊的(5000行!)郵件。使用sed工具和Regex。2. 作為程式設計語言的Regex
Time of Update: 2018-12-05
1.只能對整型數操作,例如char , short , int , and long(無論是有符號還是無符號) 2.>> , <<優先順序是小於算術運算子的,因此a = b + (c >> 1)運算式中的括弧不能少。特別要注意的是右移>>運算子,對於無符號數而言,左邊用0填補,而對於有符號數它可能用0填補,也可能用“符號位”填補,因此當我們總是希望用0填補時,必須用unsigned聲明(左移<<
Time of Update: 2018-12-05
1. 簡述 如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義“距離”為兩個節點之間邊的個數。寫一個程式求一棵二叉樹中相距最遠的兩個節點之間的距離。2. 思路 這道題是尋找最大一個距離,還是相對容易的,遞迴是比較好像到的。對於每個子樹來說,要麼最大距離在根的左子樹中,要麼在根的右子樹中,要麼是通過根的情況。 Height(NULL) = 0, Height(node) =
Time of Update: 2018-12-05
轉自:http://www.cnblogs.com/umlonline/archive/2010/05/10/1731741.html#IT摘要:我在IT職場打滾超過10年了,從小小的程式員做到常務副總。相對於其它行業,IT職場應該算比較光明的了,但也陷阱重重,本文說說我的親身體會,希望大家能在IT職場上戰無不勝! 作者:張傳波軟體知識大學www.umlonline.cn/school/本文:我會先先說一些無論是你在什麼職位都適用的通用法則,然後專門針對不同職位講講應該注意的求生法則。通用法則法