随笔分类 -  数据结构与算法

摘要:写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合......这是最近去中国移动深圳分公司笔试时 ,遇到的一道算法题,咋一看,很快写出来了:即x+2y+5z=100,并且条件为x<=100,y<=50,z<=20程序就如下:intnumber=0;for (x=0; x<=100; x++) for (y=0; y<=50; y++) for (z=0; z<=20; z++) if ((x+2*y+5*z)==100) number++;虽然觉得应该有更高效的方法,不过碍 阅读全文
posted @ 2011-12-18 16:06 苏先森1989 阅读(1053) 评论(1) 推荐(1)
摘要:稳定:冒泡排序、插入排序、归并排序和基数排序不稳定:选择排序、快速排序、希尔排序、堆排序插入排序:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描(可用二分查找,二分查找适用于已排序的数列) 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5. 将新元素插入到下一位置中 6. 重复步骤2希尔排序:冒泡排序:第一趟,从最后的n-1个数开始,与前面一个数两两比较,直到把最小一个数放... 阅读全文
posted @ 2011-11-30 11:31 苏先森1989 阅读(348) 评论(2) 推荐(0)
摘要:题目:1,1,2,3,5,8,13,21,34,...用递归写出算法,算出第30个数。解答: 斐波那契数列从第三项开始是前两个数的和。本题是经典的fibonacci数列: 1、写出return Foo(i-1)+Foo(i-2); 2、写出if(i>0&&i<=2) return 1;代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacefibonacci{classProgram{staticvoidMain(string[]args) 阅读全文
posted @ 2011-09-01 15:51 苏先森1989 阅读(428) 评论(0) 推荐(0)