
算法
max18
这个作者很懒,什么都没留下…
展开
-
求数组中最长递增子序列(LIS)
什么是最长递增子序列呢? 问题描述如下: 设L=是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin= 对于这个问题有以下几种解决思路: 1、把a1,a2,...,an排序,假设得到a'1,a'2,...,a'n,然后求a的a'的最长公共子串,这样总的时间复杂度为o(nlg(n))+o(n^2)=o(n^2); 2、动态规划的思路: 另设一辅助数组b,转载 2012-10-25 15:44:57 · 783 阅读 · 0 评论 -
大数运算
大数运算的实现方法主要有以下几种: 1) 用字符串表示大数。将大数用十进制字符数组表示,然后按照“竖式计算”的思想进行计算。这种方法比较容易理解,但是计算效率很低。 2) 将大数看成二进制流进行处理。使用各种位运算和逻辑操作来实现打算的运算。该方法设计复杂,可读性较差,而且难以调试。 3) 将大数表示成一个n进制数组。n的取值越大,数组的大小越小,这转载 2013-02-21 09:43:37 · 388 阅读 · 0 评论 -
习算法之路
第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim,kruscal要用并查集,不好写) 3.大数(高精度)加减乘除 4.二分查找. (代码可在五转载 2013-02-21 09:44:38 · 369 阅读 · 0 评论 -
8皇后问题
#include using namespace std; int a[9]; bool canPlace(int k){ for(int i=1;i if(a[i]==a[k]||abs(k-i)==abs(a[k]-a[i])) return false; } return true; } void queen(int i){ if(i>8){ for(int j=1原创 2013-10-14 14:23:47 · 545 阅读 · 0 评论