数据结构与算法
welen_flying
本人对语音、音频信号处理非常感兴趣。主要涉及:语音和音频处理;音效;去噪和回声消除;机器学习和算法优化。
展开
-
求最大公约数和小于n的所有质数
//algorithm.h enum SWAP_TYPE{MEMORY, COMPLEX}; struct SIntArray { int *pData; int num; SIntArray():pData(NULL),num(0){} void Clear(){delete pData; pData = NULL; num = 0;} }; void原创 2014-07-20 13:51:45 · 535 阅读 · 1 评论 -
多重背包
//多重背包 void WKnapsack4(int *value, int* v, int *Num, int n, int V) { int d[100][100]; memset(d, 0, sizeof(int)* 100*100); bool visit[100][100]; memset(visit, 0, sizeof(bool)* 100 * 100); int原创 2014-08-31 14:37:59 · 811 阅读 · 0 评论 -
01背包
//01背包 void WKnapsack3(int *value, int* v, int n, int V) { int d[100]; memset(d, 0, sizeof(int)* 100); bool visit[100][100]; memset(visit, 0, sizeof(bool)* 100 * 100); for (int i = 0; i <原创 2014-08-31 14:36:34 · 680 阅读 · 0 评论 -
完全背包问题
完全背包问题 解决方法 跟初级硬币问题递推法 很相似,只需将1改成 对应的数值。 value 背包价值, v体积, n种背包, 体积不超过V,最大价值。 void WKnapsack(int *value, int* v, int n, int V) { int d[1000]; memset(d, 0, sizeof(int)*1000); for(int i =原创 2014-08-29 18:48:07 · 582 阅读 · 0 评论 -
硬币问题
不同的面值Value[ ]有硬币个数Num[ ]限制,凑齐Goal面值,需要的最小和最大个数。 static int Min = 1<<10; static int Max = 0; static int* set; static int* Count; void LeastCoin_N(int* Value, int* Num, int Len, int Goal, int cur)原创 2014-08-29 11:56:46 · 729 阅读 · 0 评论 -
初级硬币问题
已知,有一批不同面值的硬币,没有硬币个数限制,求得到S的所有组合,以及最小,最大硬币个数。 最小、最大硬币个数可以用贪心法,但是不一定能够得到有效解,但是可以提高结题速度,此处略。 下面的解法比求解最大、最小硬币比较耗时。 static int* set; static int Min = 1<<10; static int Max = 0; void LeastCoin(int*原创 2014-08-28 11:01:49 · 867 阅读 · 0 评论 -
初级硬币最大最小问题递推法
static int* Min; static int* Max; void LeastCoin2(int* Value, int Len, int *d, int Goal) { for(int i = 1; i <= Goal; i++) { for(int j = 0; j < Len; j++) { if(i >= Value[j])原创 2014-08-28 14:55:13 · 827 阅读 · 0 评论 -
8皇后问题
typedef struct Spoint { int x; int y; Spoint() { x = -1; y = -1; } }; static Spoint point[8]; int Queen8(int n, int cur) { static int iCount = 0; if(cur == n) { iCount++; for(原创 2014-08-26 17:31:27 · 531 阅读 · 0 评论 -
某个集合的子集问题
int WToSigArray(int* A, int n)//消除重复元素 { int i,j,k; for( i = k = 1; i < n; i++) { for( j = 0; j < k; j++) { if(A[j] == A[i]) { break; } } if(j == k) { A[k] = A[i];原创 2014-08-26 17:24:34 · 692 阅读 · 0 评论 -
n全排列输出和 n个数的组合(数字范围a~b)
n全排列输出:int WPermutation(int num, bool bRepeat) num表示num全排列 bRepeat标志是否产生重复元素的序列。 int Permutation(int n, int* A, int cur, bool bRepeat) { static int number = 0; if(cur == n) { number++;原创 2014-08-26 17:06:25 · 2035 阅读 · 0 评论 -
初级8皇后问题
初级8皇后问题,不是真正的8皇后问题,是该问题的初级条件限制:产生不同行,不同列的组合。 typedef struct Spoint { int x; int y; Spoint() { x = -1; y = -1; } }; static Spoint point[8]; int Queen8(int n, int cur) { static int iCount原创 2014-08-26 17:29:27 · 693 阅读 · 0 评论 -
递归与非递归二叉树遍历
前段时间意外收到MS的电面,因为现在做的工作基本上是与音频、音乐信号处理相关,外带互联网全能打杂型。本质上跟计算机纯软件不是太相关。我最后选择了自己比较感兴趣的IMML组面试了一下。 面试基本上就是英语口语面试和二叉树相关的内容。所以想进微软的同学,这两项基本功要打好基础了。 笔试的第一题是用非递归的方法遍历二叉树,这个再学校的时候也没有复习到,只用过递归的方法,原创 2015-11-26 17:26:02 · 827 阅读 · 1 评论