Time of Update: 2018-12-04
寫了一個最簡單的動態連結程式庫程式,使用g++命令列編譯。怕以後忘記,就把它記到blog中。動態庫匯出標頭檔:/** * file: dll.h * Powered by JGood 2009-09-22 */#ifndef __dll_h__#define __dll_h__#ifdef __MY_DLL_LIB__ #define DLL_EXPORT extern "C" __declspec(dllexport)#else #define DLL_EXPORT
Time of Update: 2018-12-04
可以使用宏定義沒有傳回值的“函數”。例如:#define PrintMax(a, b) / do / { / int x = a, y = b; / printf("Max: %d/n", x > y ? x : y);/ } while (0)// ...PrintMax(3, 4);
Time of Update: 2018-12-04
這是一個鏈表追擊問題,設2個指標,一個一次走2步,一個一次走一步。如果有環的話,最終快的指標會追上慢的指標,如果沒有環的話,快的指標會首先到達NULL這裡我也有疑問,會不會每次都會跳過去?#include "stdafx.h" #include<iostream>#include<algorithm>using namespace std;typedef struct node{int data;struct node *next;}Node,*List;List
Time of Update: 2018-12-04
自己寫備忘的,還差,後續建立二叉樹,後續非遞迴,線索化,二叉樹最長路徑,二叉樹最遠2個節點之間的距離沒寫。記住一定要加#include "stdafx.h" #include<iostream>#include<queue> #include<stack>using namespace std;typedef struct node{ int data; struct node *left; struct node
Time of Update: 2018-12-04
程式中文本的編碼,是一個很煩人的問題。多掌握一些編碼方面的知識,在寫程式的時候,可以少走一些彎路。 在使用.NET應用程式讀文字檔的時候,我們很少注意檔案編碼的問題。因為在大部分情況下,它自己會識別出檔案的編碼。最簡單也是最常用的讀文字檔的語句: System.IO.File.ReadAllText(filePath)(預設採用utf-8編碼),只要傳入檔案的路徑,基本上可以正確的讀出文本的內容。偶爾出現亂碼的時候,只要傳入預設編碼System.Text.Encoding.Default,
Time of Update: 2018-12-04
在這裡用最簡單的思路,時間複雜度為O(n^3)思路:我們知道任意取2個元素,都能構成一個長度為2的等差數列,比如:a,b就等構成一個長度為2的,首元素為a,差為b-a的等差數列。但是三個數:a,b,c(有序)就不一定了,因為c-b和b-a未必相等。所以我們可以窮舉出數列的前2個元素a[i], a[j],因為2個數必然構成一個等差數列,差為diff = a[j]-a[i]。然後j後面的元素中,找到一個a[k]使得a[k] = a[j]+diff,然後後在k後面找到a[n] = a[k]+diff,
Time of Update: 2018-12-04
public class CountTimesInSortedArray {/** * 題目:在排序數組中,找出給定數位出現次數,比如 [1, 2, 2, 2, 3] 中2的出現次數是3次。 * 解法:使用二分尋找的方法分別找出給定數位開始和結束位置,最壞情況下時間複雜度為O(logn) */public static void main(String[] args) {int[] data={0,1,2,2,3,3,3,4,4,4,4,5};for(int target:data){int
Time of Update: 2018-12-04
轉換字串格式為原來字串裡的字元+該字元連續出現的個數,例如:1233422222 轉換為1121324125(1出現1次,2出現1次,3出現2次......與這題類似的有:一個超大文本單字清單中,統計每個單詞出現的次數。方法:定義2個變數p,tmp,tmp一個放目前正在統計次數的字元,p放剛剛讀入的字元,還要定義一個count統計當前字元出現的次數如果tmp == p, 那麼說明又讀進來一個同樣的字元,那麼這個字元出現的次數count++如果tmp!=p,
Time of Update: 2018-12-04
數組實現:#include "stdafx.h" #include<iostream>using namespace std;void adjustHeap(int a[],int index,int length){ int record = a[index]; for(int j = 2*index;j<length;j*=2)// { if(a[j]<a[j+1])//找到較大的兒子 {
Time of Update: 2018-12-04
字串左移K次首先需要判斷K的大小,因為左移K次和左移K%str.length()效果是一樣的。所以第一步有必要:K = K%str.length();方法一:每次左移一位,需要運行K輪. 時間複雜度kn, 空間複雜度 1方法二:需要一塊與字串同樣大小的額外儲存空間。假如元數組為a[1-n], 額外分配的空間為b[1-n], 那麼實現左移K位以為可以按照以下的步驟進行。1. 將a[k+1,n]拷貝到b[1,n-k]的位置上; 時間:n-k2. 將a[1,k]拷貝到b[n-k+1,n]位置上;
Time of Update: 2018-12-04
microsoft每推出一個windows版本,就會發布與其相應的開發套件,這就是platform SDK.platform是平台的意思,SDK是Software Development Kit的縮寫(即“軟體開發套件”)它裡面有大量的例子,API函數講解等等各種各樣的文檔,它可以解決開發人員的大部分問題.可以說是開發人員的必備.比.net 2003
Time of Update: 2018-12-04
var books = new[] { new {Title="Ajax in Action", Publisher="Manning", Year=2005 }, new {Title="Windows Forms in Action", Publisher="Manning", Year=2006 }, new {Title="RSS and Atom in Action", Publisher="Manning"
Time of Update: 2018-12-04
字串A:AKHDOHOSAHSAKL字串B:LOGKKL判斷B中的字母是否都在A中存在方法一:輪詢取B中的每一個字母,在A中搜尋,看是否存在。時間複雜度O(m*n)方法二:排序後搜尋分別對A,B排序,然後搜尋2個字串。時間複雜度O(mlogm)+O(nlogn)+O(m+n)方法三:雜湊表,集合,位元影像, 數組等方法時間複雜度O(m+n)其中集合的創立,以及尋找都要消耗一定的時間,卻複雜度應該不止O(n)方法四:素數法
Time of Update: 2018-12-04
GetLastError()函數的介紹這是一個很簡單的函數,它的作用就是取得上一個函數操作時所產生的錯誤碼。通過錯誤碼,就可以在winerror.h標頭檔中尋找到每一中錯誤碼所表示的含義。也可以通過VC++內建的Error Lookup工具來尋找其所表示的含義,其結果是一樣的。此函數的說明如下:DWORD GetLastError(void);這是一個沒有參數的函數,通過調用,就返回一個32位的數值。下面編寫了一個很簡單的VC++例子來說明此函數#include
Time of Update: 2018-12-04
web.config檔案中,appSetting節點引用了外部的設定檔, <appSettings file="app.config"> </appSettings>app.config部分資訊如下:<?xml version="1.0" encoding="gb2312"?><appSettings> <!--平台名稱--> <add key="PlatForm" value="嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻"
Time of Update: 2018-12-04
題目:輸入一個單向鏈表,輸出該鏈表中倒數第k個結點。鏈表的倒數第0個結點為鏈表的尾指標。鏈表結點定義如下:我們在遍曆時維持兩個指標,第一個指標從鏈表的頭指標開始遍曆,在第k-1步之前,第二個指標保持不動;在第k-1步開始,第二個指標也開始從鏈表的頭指標開始遍曆。由於兩個指標的距離保持在k-1,當第一個(走在前面的)指標到達鏈表的尾結點時,第二個指標(走在後面的)指標正好是倒數第k個結點。#include "stdafx.h"#include<iostream>#include<
Time of Update: 2018-12-04
1. int(*p)[10]:根據運算子的結合律,()的優先順序最高,所以p是一個指標,指向的一個維度為10的一維數組。p一個指向數組的某一行int a[1][4]={1,2,3,4}; int (*p)[4] = a;//p point to the row of array a for(int i=0;i<4;i++) { cout<<*((*p)+i)<<" "; }2.
Time of Update: 2018-12-04
對資料庫進行多表操作,如果表與表之間存在依賴,那麼顯式的使用事務,可以保持對資料庫操作的原子性。用Python訪問SqlServer資料庫,我使用pymssql庫。今天在使用這個庫的時候,發現一個問題。問題大概是這樣的: 我有兩張表,一張主表(ClassInfo),一張從表(Student),Student表通過外鍵ClassID與ClassInfo表進行關聯。這兩張表的主鍵都是自增型的int型欄位。 建立表的SQL語句如下:CREATE TABLE
Time of Update: 2018-12-04
方法一:窮舉#include<iostream>#include<algorithm>#define MAX 1000using namespace std;int a[] = {-3,4,2,7,25,0,8,-2};int getMin(int a[],int i,int j){ return abs(a[i]-a[j]);}int main(){ int len = sizeof(a)/sizeof(int); int min = MAX;
Time of Update: 2018-12-04
#include "stdafx.h"#include<iostream>#include<windows.h>using namespace std;/*求出10次射擊總計打出90環的所有排列,每槍的環數在1-10環*/int result[10]={0};int sum = 0;void display(){for(int i=0;i<10;i++){cout<<result[i]<<"