随笔 - 89  文章 - 118  trackbacks - 0
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(16)

随笔分类(56)

随笔档案(89)

文章分类

推荐博客

搜索

  •  

最新随笔

最新评论

阅读排行榜

08 2008 档案
求整数1~N范围和为M的所有组合      摘要: 问题:找出整数1~N范围和为M的所有集合,M<=N且M>1,集合里的数不允许重复。

解答:这个问题用递归解决最简单,代码如下:

1 #define MAX_NUM 20 //要足够大
2 int log[MAX_NUM]; //记录和数
3 int index = 0; //log[]数组的当前指针
4
5 void calc(int start, int n)
6 {
7 if (n == 0)
8 {
9 for(int j = 0; j < index; j++)
10 printf("%d ", log[j]);
11 printf("\n");
12 }
13 else
14 {
15 for(int i = start; i<=n; i++) <  阅读全文
posted @ 2008-08-29 16:13 胡满超 阅读(1044) | 评论 (0)  编辑
重建二叉树      摘要: 已知前序和中序重建二叉树,已知后序和中序重建二叉树。

void ReBuild_PreIn(char *pPreOrder, char *pInOrder, int nTreeLen, NODE **pRoot)
{
if (pPreOrder == NULL || pInOrder == NULL)
{
return;
}

NODE *pTemp = new NODE;
pTemp->chValue = *pPreOrder;
pTemp->pLeft = NULL;
pTemp->pRight = NULL;

if (*pRoot == NULL)
{
*pRoot = pTemp;
}

if (nTreeLen == 1)
{
return;
} <  阅读全文
posted @ 2008-08-27 17:51 胡满超 阅读(915) | 评论 (0)  编辑
断言式编程      摘要: 我们先看一个函数:函数的功能完成1~10的加法。

int Add1to10(int a, int b)
{
return a +b;
}

但是一般我们还需要加上几条代码:

int Add1to10(int a, int b)
{
assert(a >= 1 && a <= 10);
assert(b >= 1 && b < =10);

if ( a < 1 || a > 10 || b < 1 || b > 10)
return -1;

return a +b;
}

加上上面几条代码的作用是检查函数的输入参数,当参数不正确的时候不光要在返回值上得到体现,而且会触发assert断言,提醒我们参数有误。

断言式编程体现一个编程的思想,在我们的程序执行偏离预想的路线时给出提醒。当程序执行偏离预想的路线时一般会出现两种可能:即断言以上的程序没有理解下面程  阅读全文
posted @ 2008-08-19 10:00 胡满超 阅读(795) | 评论 (0)  编辑
Quick Sort C Code Implement      摘要: void QuickSort(int* pData,int left,int right)
{
int i = left, j = right;
int middle = pData[(left+right)/2]; // midlle value
int iTemp;
do
{
while (pData[i] < middle && i < right) i++;
while (pData[j] > middle && j > left) j--;
if (i < j) // swap
{
iTemp = pData[i];
pData[i] = pData[j];
pData[j] = iTemp;
i++; j--;
}
else if (i == j)
{
i++; j--;
}
} while (i < j  阅读全文
posted @ 2008-08-18 17:02 胡满超 阅读(765) | 评论 (0)  编辑