原创 矩陣連乘的動態規劃求解

用wps寫的一個小論文作業,順便貼過來,公式不好編輯,直接上截圖 = =|| 按照以上思路編碼實現即可,注意求解順序計算m[i][j]時,必須保證m[i][k]等元素已算出 void matrix_chain() { int

原创 深入理解C語言----函數調用過程淺析

讀了韓宏老師的《老碼識途》第一章,忍不住自己動手試一下,利用反彙編來查看函數調用過程 #include<stdio.h> typedef struct { int i1; int i2; int i3 }myrd; myrd

原创 排序小結之插入排序及其升級版

1、直接插入排序 比較次數最好n-1,最壞n(n-1)/2,平均比較複雜度爲O(n^2),平均移動複雜度也爲O(n^2),穩定的排序方法,在大部分元素有序的情況下,表現優良。不適合數據量較大的排序,小於千的數量級,是不錯選擇(文末有測試數

原创 排序小結之冒泡排序及其改進版

1、概述和基本實現 由於是相鄰元素比較交換,所以冒泡排序是一種穩定排序算法 在最優的情況下,時間時間複雜度O(n); 平均和最壞情況均是O(n^2) 基本實現: void bubble_sort(int a[], int len) {

原创 測試Linux服務器SCSI/SATA硬盤是否正常

原文鏈接:Test If Linux Server SCSI / SATA Hard Disk Going Bad     我們讀者中的一個常客提到一個問題:     怎麼測試我的硬盤是否出故障?我在 /var/log/messages

原创 深入理解C語言-----副作用(Side Effect)和順序點(Sequence Point)

先看幾個概念: 1。引用透明:如果一個表達式(或子表達式)只計算出值而不改變環境,我們就說它是引用透明的,這種表達式早算晚算對其他計算沒有影響(不改變計算的環境。當然, 它的值可能受到其他計算的影響)。比如:(a+b)*(c+d),無論先

原创 基於OpenGL的C版貪食蛇(簡陋版)

終於找到一個合適的圖形庫,比之前一個DOS窗口的好多了,DOS窗口版刷屏不給力,就算是一個sleep()下去是毫秒級的精度,等屏上信息刷出來,黃花菜都涼了。 介紹下GLUT,OpenGL Utility Toolkit,即OpenG

原创 帶寬測試初探(UDP發包方式)

突然想起一個畢設的遺留問題----對實際帶寬估計。 當時想到一個簡單的方式對網絡情況不復雜的帶寬進行測試,可行性還需進一步確認。論壇裏無人答覆,默淚點擊打開鏈接 大致原理:在鏈路上沒有其他數據流量的情況下,用高於帶寬的吞吐量發送UDP包

原创 打造win下vim+gcc+gdb的環境

本着提高程序員的可移植性,把linux下的那一套搬到win裏,用了一段時間,嘿,挺稱手的,特別是各種大大小小的IDE都有各種不盡人意的地方。這個套件,輕量,方便,也能讓那些經常在win和linux來回切換的朋友平滑過渡。 正好昨天重裝了系

原创 探尋Chrome的內部玄機---Chrome:// Pages

原文鏈接:Find Hidden Features On Chrome’s Internal 谷歌瀏覽器Chrome內置的 chrome:// pages 包含了實驗性功能、診斷工具和詳細的統計數據。她藏在用戶界面下,因此只有你的主動尋

原创 深入理解C語言-----各數據類型大小

首先看下C標準中“未明確定義”的三種類型Implementation-defined、Unspecified和Undefined。 Implementation-defined 的情況,是C 標準沒有明確規定,但是要求編譯器必須對此做出

原创 Keep It Simple and Stupid

看到劉汝佳提到的一個KISS(Keep It Simple and Stupid)原則很受啓發,程序的目的是爲了解決問題,應該用盡量簡潔的方式,不是爲了寫程序而寫程序,不是展示技巧 比如:交換兩個數的順序輸出。 可以用中間變量,也可以直接

原创 二叉樹的基本操作(創建、遞歸和非遞歸遍歷、求深度、求葉子數)

1 創建 遞歸地調用即可 void init_tree(node** p) { int elm; scanf("%d", &elm); if(elm) { *p = (node*)malloc(sizeof(node))

原创 用回溯法求解N皇后和迷宮問題

關於回溯法不再贅述太多,大家移步各種百科,本文介紹兩種應用的實現 其典型應用之一: N皇后問題 按皇后擺放規則順序遍歷棋盤依次安放皇后,直到某一個皇后找不到合適的位置時,倒退至上一步,調整上一個皇后位置,如還不滿足,繼續調整再上一個,依

原创 C99中的restrict和C89的volatile關鍵字

1、restrict 它只可以用於限定指針,告知編譯器該指針是訪問一個數據對象的唯一且初始的方式。即不存在其它進行修改操作的途徑。 主要作用是可以讓編譯器進行一些優化,生成更高效的目標代碼。 看個例子: int foo(int *a,i