随笔分类 -  C/C++

摘要:作者:陈太汉算法--找出数组中出现次数超过一半的数 每当我看到经典的算法题,就怀念高中,感觉很多算法题就是高中的题目,谁叫哥只读了个专科,高数基本相当没学。 有空要看看高数啊,想当年数学那是相当的......#include <iostream>using namespace std;class FindTheOne{public: 方法一 第一个想到的方法是见一个二维数组,一维存数组中的数据,二维存这个数出现的次数。出现次数最多的那个数就是要找的那个数 由于某个数出现的次数超过数组长度的一半,所以二维数组的长度只需要这个数组的一半。代码实现如下, 当然这个方法很糟糕,时间复杂度和 阅读全文
posted @ 2011-06-29 16:22 啊汉 阅读(19401) 评论(13) 推荐(3) 编辑
摘要:作者:陈太汉一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值 比如{3,2,4,3,6} 可以分成{3,2,4,3,6} m=1; {3,6}{2,4,3} m=2 {3,3}{2,4}{6} m=3 所以m的最大值为3算法 原理的思想是将大问题转换成小问题。就{3,2,4,3,6}的操作步骤: 第一步:想将数组递减排序得{6,4,3,3,2},求出数组中所有数的和m=18,第一个最大的数b=6, m/b=3余数为0,当除数为1,余数为0时终止。当余数不为0时,转到第三步。当余数为0时将数组划分为{6},{4,3,3,2}两个。把{4,3,3,2}看成一个新的数组。 第二步. 阅读全文
posted @ 2011-06-26 12:24 啊汉 阅读(8474) 评论(9) 推荐(1) 编辑
摘要:C++实现二叉树的基本操作包括 添加节点、删除节点、前序遍历、中序遍历、后续遍历、层序遍历、最大值、最小值、二叉树的高度//Tree.h 头文件#include <stdio.h>class Tree{private : //节点元素类型为结构体 struct LinkNode { int data; LinkNode *left; LinkNode *right; LinkNode(const int& dat,LinkNode *l,LinkNode *r):data(dat),left(l),right(r){} }; LinkNode *head;//表头节点 // 阅读全文
posted @ 2011-04-02 19:18 啊汉 阅读(8676) 评论(2) 推荐(1) 编辑
摘要:int _tmain(int argc, _TCHAR* argv[]){ char str[20],str2[20]; cout<<str<<endl; //由于分配了空间,没有写入数据,在输出地时候读没有写入数据的地址就回出现乱码 for(int i=0;i<20;i++) { str[i]='a'; //if(i==10) //{ // str[10]='\0';//字符串遇到了\0,就会结束,所以strlen(str)=10 //} } str[19]='\0';//结束字符串,没有这一句就回出现乱码 str 阅读全文
posted @ 2011-01-06 23:46 啊汉 阅读(494) 评论(0) 推荐(0) 编辑