云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 算法设计与分析实验报告

算法设计与分析实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/7/8 5:53:35

for (j=w[n]; j<=c; j++) {//背包的价值

m[n][j] = v[n]; }

//m(i,j) 背包容量为 j,可选择物品为 i,i+1…n 时 0-1 背包的最优值 for (int i=n-1; i>1; i--) {

jMax = min(w[i] - 1, c); for (int j=0; j<=jMax; j++) { m[i][j] = m[i+1][j]; }

for (j=w[i]; j<=c; j++) {

m[i][j] = max(m[i+1][j], m[i+1][j-w[i]]+v[i]); } }

m[1][c] = m[2][c]; if (c >= w[1]) {

m[1][c] = max(m[1][c], m[2][c-w[1]]+v[1]); cout<

template

void TraceBack(Type **m, int *w, int c, int n, int* x)

{//物品装入 x[i]为 1,反之为 0;背包容量 c 减少当前装入物品的重量 for (int i=1; i

if(m[i][c] == m[i+1][c]) x[i] = 0; else {

x[i] = 1; c -= w[i]; } }

x[n] = (m[n][c])? 1:0; }

void main(int argc, char* argv[]) {

int n = 6,c = 20,x[7];

//n 个物品,用 x[7]来记录每个物品是否装入,c 背包容量 int w[7] = {-2, 5, 10, 9, 5, 2, 1}; //每个物品的重量 int v[7] = {-1, 6, 3, -4, 4, 6, 0}; //每个物品的价值 int **ppm = new int*[n+1]; for (int i=0; i

}

Knapsack(v, w, c, n, ppm); TraceBack(ppm, w, c, n, x); for ( i=1; i<=n; i++) { cout<

return; }

(5) 设计一个 O(n2)时间的算法,找出由 n 个数组成的序列的最长单调递增子序 列。(P87 算法分析题 3-1)

(6) 设计算法求解独立任务最优调度问题,并编程实现。 (P79算法实现题 3-1) (7) 设计算法求解石子合并问题编程实现。(P79 实现题 3-3) (8) 设计算法求解数字三角形问题,并编程实现。 (P80题 3-4) #include void main() {

int a[100][100]; int i,j,n;

printf(\输入行数:\ scanf(\ for(i = 1 ; i <= n ; i ++ ) {

printf(\输入第%d 行数:\\n\ for( j =1 ;j <= i; j++) scanf(\ }

for(i = n-1;i>0;i--) for(j = i;j>0;j--) {

a[i][j] += a[i+1][j+1] > a[i+1][j]?a[i+1][j+1] : a[i+1][j]; //a[i][j]选 a[i+1][j+1],a[i+1][j]中最大的 }

printf(\最大路径和是:%d\\n\ return; }

(9) 设计算法求解最小 m 段和问题,并编程实现。 (P81题 3-8)

(10) 设计算法求解最少费用购物问题,并编程实现。(P88 算法实现题 3-14) 注:至少选择其中 3 题完成。 3.主要仪器设备及软件 (1) PC 机

(2) TC、VC++、Java 等任一编程语言 实验四 贪心算法及其应用

(验证型、设计型实验 6 学时) 1.目的要求:

(1) 理解贪心算法的概念和基本要素;

(2) 掌握设计贪心算法的步骤,并编程实现有关问题的求解。 2.实验内容:

(1) 编程实现活动安排问题的求解。 (P91) void sort(int f[],int n) {//结束时间 f[]排序 int temp;

for(int i=1;i

for(int j=0;jf[j+1])

{//结束时间按从早到晚排序 temp=f[j]; f[j]=f[j+1]; f[j+1]=temp; } }

cout<<\排序结果:\ for(int i=0;i

int greedySelector(int s[], int f[], bool A[]) {//活动安排算法

int n=s.length-1,j=1,count=1; A[1]=true;

for(int i=2;i<=n;i++) { if(s[i]>=f[j])

{//若下一活动开始时间晚于上一活动,则下一活动可安排,活动数 count 加 1 A[i]=true; j=i;

count++; }

else A[i]=false; }

return count; }

(2) 设计算法求解会场安排问题,并编程实现。(P108,算法实现题 4-1)。 (3) 编程实现最优装载问题的求解。 (P95) #include \

void sort(int *w,int *t,int n)

{ //按照 weight 的升序进行排序 t[] for(int i=0;i <=n;i++) {

int minweight=w[0];//最小值

for(int j=i;j <=n;j++) {

int temp=j;

for(int k=i;k <=j;k++) {

if(w[k]

t[j]=temp; } } }

void loadling(int x[],int w[],int c,int n) {

int *t=new int[n+1];//指向物品的序号 sort(w,t,n);

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

x[i]=0; }

for(i=1;i<=n&&w[t[i]]<=c;i++) {

x[t[i]]=1; c-=w[i];

cout<<\输出所装载的物品序列号以及它的重量为:\ <

void main() {

int n,c;

cout<<\请输入要装载物品的数量\ cin>>n;

int *w=new int[n+1];//指向物品的重量 int *x=new int[n+1]; for(int i=1;i <=n;i++) {

x[i]=0; }

cout<<\请输入该所能够装载的最大重量:\ cin>>c;

cout<<\请输入装载的物品的重量\

搜索更多关于: 算法设计与分析实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

for (j=w[n]; j<=c; j++) {//背包的价值 m[n][j] = v[n]; } //m(i,j) 背包容量为 j,可选择物品为 i,i+1…n 时 0-1 背包的最优值 for (int i=n-1; i>1; i--) { jMax = min(w[i] - 1, c); for (int j=0; j<=jMax; j++) { m[i][j] = m[i+1][j]; } for (j=w[i]; j<=c; j++) { m[i][j] = max(m[i+1][j], m[i+1][j-w[i]]+v[

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com