上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页

2011年7月29日

HDU 1026 广度优先搜索,BFS+路径的记录

摘要: 哎~~花了半天的时间写了一个DFS的程序,结果无情的limit time exceed,然后到网上搜了一下,居然用的是BFS一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的特点是"搜到就是最优解", 而深搜用于找多个解或者是"步数已知(比如3步就必须达到条件)"的问题,它的空间效率高,但是找到的不一定是最优解,必须记录并完成整个搜索,故一般情况下,深搜需要非常高效的剪枝(优化).像搜索最短路径这些的很明显要是用广搜,因为广搜的特性就是一层一层往下搜的,保证当前搜到的都是最优解,当然,最短路径只是一方面的应用,像什么最少状态转换也是可以应 阅读全文

posted @ 2011-07-29 10:09 lonelycatcher 阅读(4789) 评论(0) 推荐(0) 编辑

2011年7月28日

HDU 1025 最长递增子序列问题

摘要: 参考:http://www.cnblogs.com/lonelycatcher/archive/2011/07/28/2119123.html//最长递增自序列,吉林大学模板#include<iostream>#include<stdio.h>#include<cstdlib>#include<string.h>using namespace std;int N,ans;int a[500010];int f[500010];int d[500010];//d[i]表示以结尾的最长递增子序列长度,当然,这道题中,数组d可以用不到的int bsea 阅读全文

posted @ 2011-07-28 10:20 lonelycatcher 阅读(1520) 评论(0) 推荐(0) 编辑

动态规划之最长递增子序列问题

摘要: 以下文章转载自CSDN,我收藏一下。因为找不到原作作者,敬请原谅,如果您是作者请告知我。最长递增子序列问题的求解最长递增子序列问题是一个很基本、较常见的小问题,但这个问题的求解方法却并不那么显而易见,需要较深入的思考和较好的算法素养才能得出良好的算法。由于这个问题能运用学过的基本的算法分析和设计的方法与思想,能够锻炼设计较复杂算法的思维,我对这个问题进行了较深入的分析思考,得出了几种复杂度不同算法,并给出了分析和证明。一,最长递增子序列问题的描述设L=<a1,a2,…,an>是n个不同的实数的序列,L的递增子序列是这样一个子序列Lin=<aK1,ak2,…,akm>,其 阅读全文

posted @ 2011-07-28 09:10 lonelycatcher 阅读(30282) 评论(5) 推荐(12) 编辑

2011年7月27日

HDU 1024 MAX sum plus plus

摘要: 传送们:http://blog.sina.com.cn/s/blog_677a3eb30100jxqa.htmlAuthorJGShining(极光炫影)思路:dp[i][j]表示前j个元素分成i段的最优解,同时这个最优解是由a[j]元素结束的。转移方程是dp[i][j]=max{f[i][j-1]+a[j],f[i-1][k]+a[j],(i-1<=k<j)} (i<=j<=n-m+i)其中j的上下界的确定比较麻烦。现在分别解释上界和下界:上界:dp[i][j]中,如果j=i-1,意思就是在前面i-1个元素中分成i段,这个是不可能实现的。下界:如果m=n=4,这时dp 阅读全文

posted @ 2011-07-27 16:59 lonelycatcher 阅读(2212) 评论(0) 推荐(0) 编辑

2011年7月26日

HDU 1023 卡特兰数

摘要: 参见《组合数学》第八章 特殊计数序列 P185,因为涉及到大数,所以用java 处理起来比较方便import java.util.*;import java.io.*;import java.math.*;public class Main { public static void main(String[] args) { BigInteger []h=new BigInteger[101]; h[0]=new BigInteger("1"); h[1]=new BigInteger("1"); for(int i=2;i<=100;i++) { 阅读全文

posted @ 2011-07-26 11:25 lonelycatcher 阅读(257) 评论(0) 推荐(0) 编辑

上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 25 下一页

导航