算法
文章平均质量分 56
爱跑步的蜗牛
just do
展开
-
求解最长公共递增子序列
程序功能:求解最长公共递增子序列经过vc8.0编译通过**/#include #include using namespace std;#define N 11//---------------------------------------------------------//最长公共子序列求解int lcslength(int * x,int m,int原创 2016-06-11 00:28:08 · 257 阅读 · 0 评论 -
动态规划算法
这是我们计算机系算法设计课的实验课程,下面是动态规划内容:实验四:动态规划实验目的:理解动态规划的基本思想,理解动态规划算法的两个基本要素最优子结构性质和子问题的重叠性质。熟练掌握典型的动态规划问题。掌握动态规划思想分析问题的一般方法,对较简单的问题能正确分析,设计出动态规划算法,并能快速编程实现。实验内容:编程实现讲过的例题:最长公共子序列问题、矩阵连乘问题、凸多边形最优三角剖分原创 2016-06-11 00:29:59 · 547 阅读 · 1 评论 -
最大公共子序列
思路:dp[i][j],其中i,j表示第一个字符串的前i个字符和第二个字符串的前j个字符串的最大公共子序列。#include#includeusing namespace std;char a[1000],b[1000];int dp[1001][1001];int main(){ int i,j,la,lb;while(cin>>a>>b){ la=strlen(a);原创 2016-06-11 00:38:01 · 313 阅读 · 0 评论 -
博弈-取石子游戏
两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的原创 2016-06-11 00:39:29 · 347 阅读 · 0 评论 -
石堆合并问题
问题:在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。状态:1、dp[i][j]=0 (i==j)2、dp[i][j]=min(dp[i][k]+dp[k][j])+sum[i][j] (i!=j)static int dp(int i,int j原创 2017-09-15 21:26:18 · 926 阅读 · 0 评论 -
汉诺塔递归分析和非递归算法
一位法国数学家曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将转载 2016-08-01 10:12:59 · 8068 阅读 · 0 评论 -
多个集合积-笛卡尔积
问题:求多个集合的笛卡尔积,{a,c}*{b,d}*{e,f,g}……思路:使用两个临时集合交替存贮与集群中的集合的笛卡尔积。 public static void main (String[]args){ char[][] a = {{'a', 'b'}, {'c', 'e', 'y'}, {'z', 'y'}, {'e', 'g', 'h', 'x', 'f'}原创 2017-09-15 21:45:31 · 5487 阅读 · 0 评论