#include<stdio.h> #define N 5 //物品数量(总类) #define W 100 //容量 int v_temp[N+1], w_temp[N+1]; // 物品价值数组,物品容量数组 double vw_temp[N+1];//单位物品价值容量数组 double answer[N+1] = {0};//解方案数组 void show(int v[],int w[],double vw[]) { int i; for(i = 1;i<=N;i++){ printf("%d ",v[i]); } printf("\n"); for(i = 1;i<=N;i++){ printf("%d ",w[i]); } printf("\n"); for(i = 1;i<=N;i++){ printf("%.1f ",vw[i]); } printf("\n"); } void merge_sort(int v[],int w[],double vw[],int l,int r) { if(l>=r) { return ; } int mid = (l+r)/2; merge_sort(v,w,vw,l,mid); merge_sort(v,w,vw,mid+1,r); int i = l,j = mid+1,k = 1; while(i<=mid && j<=r) { if(vw[i] > vw[j]) { vw_temp[k] = vw[i]; v_temp[k] = v[i]; w_temp[k] = w[i]; k++,i++; } else { vw_temp[k] = vw[j]; v_temp[k] = v[j]; w_temp[k] = w[j]; k++,j++; } } while(i<=mid) { vw_temp[k] = vw[i]; v_temp[k] = v[i]; w_temp[k] = w[i]; k++,i++; } while(j<=r) { vw_temp[k] = vw[j]; v_temp[k] = v[j]; w_temp[k] = w[j]; k++,j++; } for(i = l,j= 1;i<=r;i++,j++) { vw[i] = vw_temp[j]; v[i] = v_temp[j]; w[i] = w_temp[j]; } } double max_value(int v[],int w[],double vw[]) { double result = 0.0; int i,w_temp = W; for(i = 1;i<=N;i++) { if(w_temp>w[i]) { answer[i] = 1; result = result+v[i]; w_temp = w_temp-w[i]; } else { break; } } if(w_temp>0 && i<=N) { answer[i] = (double)w_temp/w[i]; result = result + w_temp*vw[i]; } return result; } int main() { int v[] = {0,20,65,30,40,60};//物品价值数组 int w[] = {0,10,30,20,40,50};//物品容量数组 double vw[N+1] = {0}; int i; for(i = 1;i<=N;i++) { vw[i] = (double)v[i]/w[i]; } printf("排序前\n"); show(v,w,vw); printf("排序后\n"); merge_sort(v,w,vw,1,N);//归并排序 show(v,w,vw); double result = max_value(v,w,vw); printf("result = %.1f\n",result); printf("解方案结果为:\n"); for(i = 1;i<=N;i++) { printf("%.1f ",answer[i]); } return 0; }贪心算法-背包问题
张小明
前端开发工程师
别再只用plot了!用Matlab的hilbert和envelope函数,3步搞定信号包络线绘制(附完整代码)
信号分析进阶:Matlab中hilbert与envelope函数的实战应用指南在工程信号处理领域,包络线分析是揭示信号幅值变化趋势的核心技术。无论是机械振动监测、声学特征提取还是通信信号解调,准确获取包络线都能帮助工程师快速把握信号的本质特征。Mat…
SkyWater PDK 130nm工艺设计套件深度集成指南:从环境配置到芯片验证的完整技术实践
SkyWater PDK 130nm工艺设计套件深度集成指南:从环境配置到芯片验证的完整技术实践 【免费下载链接】skywater-pdk Open source process design kit for usage with SkyWater Technology Foundrys 130nm node. 项目地址: https://gitcode.com/gh_mirrors/sk/skywa…
如何在Mac上零成本实现专业医学影像分析?Horos免费开源工具终极指南
如何在Mac上零成本实现专业医学影像分析?Horos免费开源工具终极指南 【免费下载链接】horos Horos™ is a free, open source medical image viewer. The goal of the Horos Project is to develop a fully functional, 64-bit medical image viewer for OS X. Horo…
牙齿美白为什么开始从“浓度驱动”转向“活性驱动”?
在牙齿美白的发展历程中,过氧化氢(HP)长期占据核心地位,行业曾形成一个根深蒂固的共识:过氧化氢浓度越高,美白效果越好。这种“浓度驱动”逻辑主导市场多年,但随着消费者对口腔健康与体验的要求…
MCprep终极指南:让Minecraft动画制作变得简单快速
MCprep终极指南:让Minecraft动画制作变得简单快速 【免费下载链接】MCprep Blender python addon to increase workflow for creating minecraft renders and animations 项目地址: https://gitcode.com/gh_mirrors/mc/MCprep 在追求完美的Minecraft动画制作…
MATLAB内点法无功优化代码包:含IEEE14节点完整算例与逐行中文注释
本文还有配套的精品资源,点击获取 简介:一套开箱即用的MATLAB无功优化实现,采用跟踪中心轨迹的内点法求解最优潮流问题。程序主体为opflatestedition.m,已通过IEEE14节点系统全面测试,能准确处理节点电压幅值上下限…