设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>理工论文 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
动态规划(二)上机实验报告
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

动态规划

1、 01背包问题

2、 #include <iostream>

3、 #include <cmath>

4、 using namespace std;

5、

6、 int v_[10000][10000];   //前i个物品装入容量为j的背包中的最大价值

7、 int x[10000];   //装入背包的物品

8、

9、 int KnapSack(int w[], int v[], int n, int c){

10、     int i,j;

11、

12、     //初始化第0行和第0列

13、     for(i=0; i<=n; ++i)

14、         v_[i][0] = 0;

15、     for(j=0; j<=c; ++j)

16、         v_[0][j] = 0;

17、

18、     //计算第i行

19、     for(i=1; i<=n; ++i)

20、         for(j=1; j<=c; ++j)

21、             if(j<w[i])

22、                 v_[i][j] = v_[i-1][j];

23、             else

24、                 v_[i][j] = v_[i-1][j] > v_[i-1][j-w[i]]+v[i]

25、                     ? v_[i-1][j] : v_[i-1][j-w[i]]+v[i];

26、

27、     //计算装入背包的物品

28、     for(j=c,i=n; i>0; --i)

29、         if(v_[i][j]>v_[i-1][j]){

30、             x[i] = 1;

31、             j = j-w[i];

32、         }else

33、             x[i] = 0;

34、

35、     //返回最大价值

36、     return v_[n][c];

37、 }

38、

39、 int main(){

40、     //w重量 v价值 n物品数 c背包容量

41、     int w[10000],v[10000];

42、     int n,c;

43、     cin>>c>>n;

44、     for(int i=1; i<=n; ++i)

45、         cin>>w[i]>>v[i];

46、     cout<<KnapSack(w,v,n,c);

47、 }

48、 最大子段和

49、 #include <iostream>

50、 #include <algorithm>

51、 using namespace std;

52、

53、 int main()

54、 {

55、     int n;

56、     int a[100000];

57、     int b[100000];

58、     cin>>n;

59、     for(int i=0; i<n; ++i){

60、         cin>>a[i];

61、         b[i] = a[i];

62、     }

63、     int max_ = 0;

64、     for(int i=0; i<n; ++i){

65、         b[i] = max(b[i],b[i-1]+a[i]);

66、         if(max_<b[i])

67、             max_ = b[i];

68、     }

69、     cout<<max_;

70、     return 0;

71、 }

72、 K-近似匹配

73、 #include <iostream>

74、 #include <cmath>

75、 #include <algorithm>

76、 using namespace std;

77、

78、 int d[10000][10000];

79、

80、 int min(int a, int b, int c){

81、     int min = a<b?a:b;

82、     if(c<min)

83、         min = c;

84、     return min;

85、 }

86、

87、 int ASM(string p, int m, string t, int n){

88、     int i,j;

89、

90、     //初始化

91、     for(j=1; j<=n; ++j)

92、         d[0][j] = j;

93、     for(i=0; i<=m; ++i)

94、         d[i][0] = i;

95、

96、     //依次计算

97、     for(j=1; j<=n; ++j)

98、         for(i=1; i<=m; ++i)

99、             if(p[i-1] == t[j-1])

100、                 d[i][j] = min(d[i-1][j-1], d[i-1][j]+1, d[i][j-1]+1);

101、             else

102、                 d[i][j] = min(d[i-1][j-1]+1, d[i-1][j]+1, d[i][j-1]+1);

103、

104、     //返回最小差别数

105、     return d[m][n];

106、 }

107、

108、 int main(){

109、     //p[]存储模式 t[]存储文本

110、     //char p[10000],t[10000];

111、     int m,n;

112、

113、     string p,t;

114、     cin>>p>>t;

115、     m = p.length();

116、     n = t.length();

117、

118、 //    cin>>m;

119、 //    for(int i=1; i<=m; ++i)

120、 //        cin>>p[i];

121、

122、 //    cin>>n;

123、 //    for(int i=1; i<=n; ++i)

124、 //        cin>>t[i];

125、

126、     cout<<ASM(p,m,t,n);

127、     return 0;

128、 }

129、 最优二叉树查找

130、 #include <iostream>

131、 #include <cmath>

132、 #include <algorithm>

133、 using namespace std;

134、

135、 int c[10000][10000];

136、

137、 int OptimalBST(int p[], int n){

138、     int i,j,k,d;

139、     int min,sum;

140、

141、     //初始化主对角线和第一条次对角线

142、     for(int i=1; i<=n; ++i){

143、         c[i][i-1] = 0;

144、         c[i][i] = p[i-1];

145、     }

146、     c[n+1][n] = 0;

147、

148、     //计算其余对角线

149、     for(d=1; d<n; ++d)

150、         for(i=1; i<=n-d; ++i){

151、             j = i+d;

152、             min = 99999777;

153、             //mink = i;

154、             sum = 0;

155、             for(k=i; k<=j; ++k){

156、                 sum += p[k-1];

157、                 if(c[i][k-1]+c[k+1][j]<min){

158、                     min = c[i][k-1]+c[k+1][j];

159、                 }

160、             }

161、             c[i][j] = min+sum;

162、         }

163、

164、     ////////////////////////////

165、 //    for(i=0; i<=n; ++i){

166、 //        for(j=0; j<=n; ++j)

167、 //            cout<<c[i][j]<<"\t";

168、 //        cout<<endl;

169、 //    }

170、

171、     return c[1][n];

172、 }

173、

174、 int main(){

175、     //n个字符的查找概率存储在p[]中

176、     int p[10000];

177、     int n;

178、

179、     cin>>n;

180、     int del=0;

181、     for(int i=0; i<n; ++i){

182、         cin>>p[i];

183、         del+=p[i];

184、     }

185、

186、     cout<<OptimalBST(p,n)-del;

187、 }

四、运行输出结果:

1、 01背包问题

2、 最大子段和

3、 K-近似匹配

4、 最优二叉树查找

五、调试和运行程序过程中产生的问题、采取的措施及获得的相关经验教训:

1、我一开始把二叉查找树那里的一些数据类型搞错了,导致出现了一些错误(数据类型不匹配)。

2、最优二叉树查找里面我没有将double改成int导致结果出错了,这个低级错误耗了我好长好长时间QAQ。

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
悬架的机械设计对动态加载过程的影 选择榨汁机的诚实指南 通用回归神经网络在声呐目标分类中
工艺规程制订与并行工程 储油罐的变位识别与罐容表标定 DVD租赁优化方案
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!