《程序设计艺术与方法实验报告2.doc》由会员分享,可在线阅读,更多相关《程序设计艺术与方法实验报告2.doc(3页珍藏版)》请在三一办公上搜索。
1、程序设计艺术与方法课程实验报告实验名称实验四 动态规划算法的实现姓 名孙国友系院专业计算机与信息学院班 级信息安全10-02班学 号20103061实验日期指导教师成 绩一、实验目的和要求1理解动态规划的基本思想、动态规划算法的基本步骤 2掌握动态规划算法实际步骤二、实验预习内容1动态规划算法的基本要素2最长公共子序列3矩阵连乘问题三、实验项目摘要1.求两个字符串的最长公共子序列。 - 151 -X 的一个子序列是相应于X 下标序列1, 2, , m 的一个子序列,求解两个序列的所有子序列中长度最大的,例如输入:pear, peach 输出:pea。2给定两个字符串a 和b ,现将串a 通过变
2、换变为串b ,可用的操作为,删除串a 中的一个字符;在串 a 的某个位置插入一个元素;将串 a 中的某个字母换为另一个字母。对于任意的串a 和串b ,输出最少多少次能够将串变为串 b 。3输入一个矩阵,计算所有的子矩阵中和的最大值。 例如,输入 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 输出为:15 四、 实验结果与分析(源程序及相关说明)实验代码:#include #include using namespace std; int min(int x1,int x2, int x3) if(x2x1) x1=x2; else if(x3x1) x1=x3;
3、 return x1; void change(string s1,string s2) const char * str=s1.c_str(); const char * tep=s2.c_str(); int bNN; b00=0; for(int i=1;i=s1.length();i+) b0i=i; for(int j=1;j=s2.length();j+) bj0=j; for( i=1;i=s2.length(); i+) for(int m=1;m=s1.length();m+) if(tepi-1=strm-1) bim=bi-1m-1; else bim=1+min(bi-1m-1,bi-1m,bim-1); cout将a变为b需要bs2.length()s1.length() 步!endl; void main() string s1,s2; cout s1; cout s2; change(s1,s2); coutendl;