編程之美-2.10-尋找數組中的最大值和最小值

1. 簡述    對於一個由N個正數組成的數組,需要比較多少次才能把最大值和最小值找出來?2. 思路    1) 就是遍曆一遍,分別統計最大值和最小值,2*N。    2) 每次遍曆兩個數字,比較一下這兩個數字,大的數字更新最大值,小的數字更新最小值,一共是N/2次,每次比較3次,一共就是3*N/2次比較。   

關於struct和union儲存的記憶體位元組對齊的問題

原帖:http://blog.csdn.net/jcwKyl/archive/2008/04/21/2311112.aspx(我做了部分摘錄) 1.可以使用 #pragma pack 指令來指定對齊位元組,該指令指定記憶體對齊位元組的功能和編譯器選項 /Zp 是等效的。2.#pragma指令對該指令之後的 struct 或 union 的聲明有效。如果把這條指令放在介於資料結構的聲明後面和這些資料結構的執行個體的定義前面,則不起任何效果。3.在使用了 #pragma pack(n)

最大矩陣連乘次數

這題只不過把王曉東書上求最小連乘次數改為了求最大連乘次數,方法還是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]

《編程之美》:求二叉樹中節點的最大距離

看到這題,第一時間就聯想到了求二叉樹深度(通過分別求左右子樹的深度,然後合并(取最大值加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 =

最長遞增子序列

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

《編程之美》:分層遍曆二叉樹

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

整數劃分和放蘋果問題

整數劃分問題和正整數連續劃分問題: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):

編程之美-2.18-數組分割

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!),複雜度過高。   

重建二叉樹

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

編程之美-2.19-區間重合判斷

1. 簡述    給定一個源區間[x,y] (y>=x)和N個無序目標區間[x1,y1][x2,y2][x3,y3]...[xn][yn],判斷[x,y]是否在目標區間內。2. 思路    這個比較簡單,合并目標區間,判斷源區間是否在目標區間內即可。具體過程如下:    第一步,先把目標區間排序。   

字串處理的兩個問題:刪除指定字元,刪除相鄰相同的字元

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++)

編程之美-2.8-找合格整數

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

批次工作發送器(最佳化了一個細節)

王曉東書上的例子,但是我做了最佳化並沒有使用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

單繼承,多繼承,虛擬繼承,sizeof大小

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() {}};

初識,線段樹和樹狀數組

這幾天在網上看了很多關於線段樹和樹狀數組的資料,感覺是很重要的資料結構,有必要邊學邊做下記錄。1.線段樹凡是關於線段樹的資料,我想都有這麼一張圖,的確,它給了人最初的感性認識,其次這幅圖在以後分析問題時也很有協助: 線段樹的基本操作(由於線段樹是一棵完全二叉樹,且每條線段以類似“二分”的方法處理,因此時間複雜為O(logN)):Code highlighting produced by Actipro CodeHighlighter

編程之美-2.9-斐波那契數列

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

閱讀筆記-精通Regex-第1章-Regex入門

1. 解決實際問題    通過幾個執行個體說明Regex是十分有用的:    · 檢查許多檔案,確保每一行中的"SetSize"的出現次數與"ResetSize"的出現次數一樣多,而且要保證大小寫不敏感。    · 處理遠端機器上的某些E-mail,把郵件的標題作為列表整理出來。使用了grep工具和Regex"^(From|Subject)"    · 尋找一個特殊的(5000行!)郵件。使用sed工具和Regex。2. 作為程式設計語言的Regex   

位元運算總結

1.只能對整型數操作,例如char , short , int , and long(無論是有符號還是無符號) 2.>> , <<優先順序是小於算術運算子的,因此a = b + (c >> 1)運算式中的括弧不能少。特別要注意的是右移>>運算子,對於無符號數而言,左邊用0填補,而對於有符號數它可能用0填補,也可能用“符號位”填補,因此當我們總是希望用0填補時,必須用unsigned聲明(左移<<

編程之美-3.8-求二叉樹種節點的最大距離

1. 簡述    如果我們把二叉樹看成一個圖,父子節點之間的連線看成是雙向的,我們姑且定義“距離”為兩個節點之間邊的個數。寫一個程式求一棵二叉樹中相距最遠的兩個節點之間的距離。2. 思路    這道題是尋找最大一個距離,還是相對容易的,遞迴是比較好像到的。對於每個子樹來說,要麼最大距離在根的左子樹中,要麼在根的右子樹中,要麼是通過根的情況。    Height(NULL) = 0, Height(node) =

IT職場求生法則《轉》

轉自:http://www.cnblogs.com/umlonline/archive/2010/05/10/1731741.html#IT摘要:我在IT職場打滾超過10年了,從小小的程式員做到常務副總。相對於其它行業,IT職場應該算比較光明的了,但也陷阱重重,本文說說我的親身體會,希望大家能在IT職場上戰無不勝! 作者:張傳波軟體知識大學www.umlonline.cn/school/本文:我會先先說一些無論是你在什麼職位都適用的通用法則,然後專門針對不同職位講講應該注意的求生法則。通用法則法

總頁數: 61357 1 .... 12232 12233 12234 12235 12236 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.