Time of Update: 2018-12-04
乙一的兩本知名怪誕小說《zoo》、《夏天煙花我的屍體》都拜讀過了,初衷是抱著看恐怖小說的心情去看的,看完了才發現其實不恐怖,用怪誕來形容很貼切。
Time of Update: 2018-12-04
int StrInStr1(char *src,char *des){//方法一:窮舉src迴圈移位的字串組合,每個都跟des比較int len = strlen(src);for( int i = 0; i < len; ++i){char tempchar = src[0];for( int j = 0; j < len - 1;++j) //迴圈左移src[j] = src[j + 1];src[len - 1] =
Time of Update: 2018-12-04
1. 檔案描述符在核心中資料結構 一個進程在此存在期間,會有一些檔案被開啟,從而會返回一些檔案描述符,從shell中運行一個進程,預設會有3個檔案描述符存在(0、1、2), 0與進程的標準輸入相關聯,1與進程的標準輸出相關聯,2與進程的標準錯誤輸出相關聯,一個進程當前有哪些開啟的檔案描述符可以通過/proc/進程ID/fd目錄查看。 可以清楚的說明問題: 進程表項———————————————— fd標誌 檔案指標 _____________________fd 0:|_____
Time of Update: 2018-12-04
題目:把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個排好序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{3, 4, 5, 1, 2}為{1, 2, 3, 4, 5}的一個旋轉,該數組的最小值為1。 解題:類似二分尋找,使用兩個指標:left ,right 指向一前一後,一般情況下arr[left]一定大於等於arr[right],除非排序好的數組本身沒動過 再使用mid=(left+right)/2 這樣,如果
Time of Update: 2018-12-04
void DeleteRandomNode(node *pCurrent){//從無頭單鏈表中刪除結點assert(pCurrent != NULL);node *pNext = pCurrent->next;if(pNext != NULL){pCurrent->next = pNext->next;pCurrent->data = pNext->data;delete pNext;}}void ReverseList(node
Time of Update: 2018-12-04
題目:數組中有一個數字出現的次數超過了數組長度的一半,找出這個數字。思想:我們假設存在這樣的數字,次數超過一半,那麼那個數的次數減去其它數位次數一定大於0.說白了就是:從前到後,碰到兩個不兩同的數,我們就刪了它們,當然不是真刪除,我們可以用一個記數器+一個變數儲存頻繁出現的值。這樣最後得到的數就是要求的。還有一種比較偷懶的方法,但效率要差,先排序qsort一下,那麼中間那個元素一定是所求。#include <stdio.h>#include
Time of Update: 2018-12-04
register修飾符暗示編譯器相應的變數將被頻繁地使用,如果可能的話,應將其儲存在CPU的寄存器中,以加快其儲存速度。* Procedure for the assignment of structures, */ /* if the C compiler doesn't support this feature */ #ifdef NOSTRUCTASSIGN memcpy (d, s, l) { register char *d; register char
Time of Update: 2018-12-04
return語句不可返回指向“棧記憶體”的“指標”或者“引用”,因為該記憶體在函數體結束時被自動銷毀。char * Func(void){char str[] = "hellow world";// str的記憶體位於棧上 return str; // 將導致錯誤}void Test4(void){char *str = NULL; str = GetString();// str 的內容是垃圾 cout<< str <<
Time of Update: 2018-12-04
程式使用dll時需要lib 檔案,下載sqlite3時只能得到def和dll檔案,所以可以使用lib 命令產生一個lib ,過程如下1)將C:/Program Files/Microsoft Visual Studio 8/VC/bin放在環境變數path中2)啟動CMD,進入到放def 檔案的目錄3)lib /DEF :sqlite3.def /machine:IX86這時可能提示找不到mspdb80.dll,所以 4)從C:/Program Files/Microsoft Visual
Time of Update: 2018-12-04
1. 非局部跳轉函數 - setjmp 和 longjmp 函數 非局部指的是,這不是由普通C語言goto語句在一個函數內實施的跳轉,而是在棧上跳過若干調用幀, 返回到當前函數調用路徑上的某一個函數中。(簡單點基本這樣說:goto 語句用於同一個函數內跳轉, 而 setjmp 和 longjmp的組合,不但可以實現函數內跳轉,還可以實現函數間跳轉)
Time of Update: 2018-12-04
#include<stdio.h>#include<stdlib.h>bool IsContinuous1(int *arr,int N){/*整數數列,元素取值為0...65535中任意一個不重複的數,0可以出現多次1、元素值可以亂序。2、0可以匹配任何數值。3、0可以多次出現。4、全0算連續、只有一個非0也算連續。 */int min = -1,max = -1;for(int i = 0;i < N; ++i){if(arr[i] != 0){if( min
Time of Update: 2018-12-04
Time of Update: 2018-12-04
圖 C程式的啟動與終止區別:_exit()函數:直接使進程停止運行,清除其使用的記憶體空間,並銷毀其在核心中的各種資料結構;exit()函 數則在這些基礎上作了一些封裝,在執行退出之前加了若干道工序。exit()函數與_exit()函數最大的區別就在於 exit()函數在調用 exit 系統調用之前要檢查檔案的開啟情況,把檔案緩衝區中的內容寫迴文件。#include<unistd.h>main(){printf("output begin\n");printf("content
Time of Update: 2018-12-04
int gcd1(int x,int y){//歐幾裡得輾轉相除法return (!y)?x:gcd1(y,x % y);}int gcd2(int x,int y){//能除的盡x,y的數,也能除的盡x-y,yif( x < y)return gcd2(y,x);if( y == 0 )return x;elsereturn gcd2(x - y,y);}int IsEven(int x){//判斷x是否偶數return !(x & 0x1);}int gcd3(int
Time of Update: 2018-12-04
這一天都是昏昏沉沉的,沒有精神,晚上重新看了一下這本書,第一次看還是在遙遠的大二,那時候覺得非常非常好看,看完後還和某個大神同學討論,跟他講裡面的案例。其實心理學真的很奇妙,有很多你想不到的有趣案例,精神病人的世界未必就是恐怖怪誕的,有些或許會很溫情,就像這本書裡面講的《永遠永遠》故事,再讀還是覺得非常感動,可能因為我爺爺的緣故,他也有幾乎差不多一樣的經曆,不過不是跟我奶奶了,是另外一個人。天才和瘋子就是兩個極端,一個在左一個在右,中間就是我們這些平凡人,就是我們這些人在這兩頭無盡穿梭。精神分析
Time of Update: 2018-12-04
#include <iostream>using namespace std;/* * 61.找出數組中兩個只出現一次的數字題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)。 */void findTwoNumsWithOthersHas2Times(int s[],int len){if(len<2) return;//假設兩個數為A B 先求出A^Bint
Time of Update: 2018-12-04
n個骰子的點數。把n個骰子扔在地上,所有骰子朝上一面的點數之和為S。輸入n,列印出S的所有可能的值出現的機率。思想:F(n,s) = F(n-1,s-6)+F(n-1,s-5)+F(n-1,s-4)+F(n-1,s-3)+F(n-1,s-2)+F(n-1,s-1);#include <stdio.h>#include <stdlib.h>#include <string.h>int power(int base,unsigned int n){if(n==0)
Time of Update: 2018-12-04
#include <stdio.h>#include <stdlib.h>typedef struct node{struct node* next;int key;} Node;//交換相鄰的元素,如果是交換兩結點的值就很簡單,但是交換結點的話就。。//以下是交換結點。//如 1 2 3 4 5 ==> 2 1 4 3 5Node* swapAdjacent(Node *head1){if(head1==NULL) return head1;Node
Time of Update: 2018-12-04
問題的描述:汽車生產工廠共有兩條裝配線,每條有 n 個裝配站;裝配線 i 的第 j 個裝配 站表示為 Si,j,在該站的裝配時間為 ai,j。一個汽車底盤進入工廠,然後進入裝配 線 i(i 為 1 或 2) ,花費時間為 ei。在通過一條線的第 j 個裝配站後,這個底盤來 到任一條線的第(j+1)個裝配站。如果它留在相同的裝配線,則沒有移動開銷; 如果它移動到另一條線上,則花費時間為 ti,j。在離開一條線的第 n 個裝配站後, 完成的汽車花費時間 xi
Time of Update: 2018-12-04
這與求兩個字串的公用子序列要區分開,見http://blog.csdn.net/shandianling/article/details/7888050<br/>但 求你方法與求公用子序列類似,而且要簡單一點。<br/>方法:動態規劃.迴圈遍曆兩個字串,尋找當s1[i]==s2[k] 的情況 然後儲存在c[i][k]中,c[i][k]=c[i-1][k-1]+1 最後我們會得到類似以下矩陣 OK,結果可以看出來了。#include