当前位置: 首页 > wzjs >正文

档案网站建设网页互联网营销培训课程

档案网站建设网页,互联网营销培训课程,诗敏家具网站是谁做的,搜索引擎网站入口贪心算法(Greedy Algorithm)是一种常用的算法思想,通常用来解决最优化问题。可以使用贪心算法来解决一些问题,例如找零钱、任务调度等。 以找零钱为例,简单介绍一下贪心算法的应用 假设有一堆不同面额的硬币&#xff…

贪心算法(Greedy Algorithm)是一种常用的算法思想,通常用来解决最优化问题。可以使用贪心算法来解决一些问题,例如找零钱、任务调度等。

以找零钱为例,简单介绍一下贪心算法的应用
假设有一堆不同面额的硬币,现在需要用最少数量的硬币凑出某个金额。这时可以使用贪心算法来解决。

#include <stdio.h>void findMinCoins(int coins[], int n, int amount) {int count = 0;printf("使用的硬币面额为:");// 从面额最大的硬币开始尽可能多地使用for (int i = 0; i < n; i++) {while (amount >= coins[i]) {amount -= coins[i];count++;printf("%d ", coins[i]);}}printf("\n总共使用了 %d 枚硬币\n", count);
}int main() {int coins[] = {25, 10, 5, 1};  // 硬币的面额int n = sizeof(coins) / sizeof(coins[0]);int amount = 93;  // 需要凑出的金额findMinCoins(coins, n, amount);return 0;
}

我们定义了一个findMinCoins函数来找零,并在main函数中调用它。该算法每次都选择面额最大的硬币来尽量多地凑出金额。这样就能保证所需硬币数量最小,这就是贪心算法的思想。

在实际应用中,贪心算法可能不适用于所有场景,但对于特定类型的问题,它是一种简单而高效的解决方案。

活动选择问题

#include <stdio.h>// 假设活动已经按照结束时间非降序排列
void activitySelection(int start[], int finish[], int n) {printf("Following activities are selected:\n");// 第一个活动总是被选中int i = 0;printf("%d ", i);// 对剩下的活动进行遍历for (int j = 1; j < n; j++) {// 如果这个活动的开始时间大于或等于上一个活动的结束时间,那么选择这个活动if (start[j] >= finish[i]) {printf("%d ", j);i = j;}}
}int main() {int start[] = {1, 3, 0, 5, 8, 5};int finish[] = {2, 4, 6, 7, 9, 9};int n = sizeof(start) / sizeof(start[0]);activitySelection(start, finish, n);return 0;
}

在这个例子中,我们首先将活动按照结束时间非降序排列,然后从第一个活动开始,依次检查后续活动的开始时间是否满足条件。

如果满足条件,就选择该活动并更新当前活动的索引。活动选择问题是一个典型的可以通过贪心算法解决的问题,基本思路是每一步都做出一个局部最优的选择,以期望最终能得到全局最优解。

贪心算法的活动选择问题是一个经典的应用场景,通常涉及到安排一系列活动,每个活动都有一个开始时间和结束时间,而资源(例如会议室)只能同时被一个活动使用。目标是安排出尽可能多的互不相交的活动。

也可以运用结构体

#include <stdio.h>// 活动结构体,包含开始时间和结束时间
struct Activity {int start;int finish;
};// 将活动按照结束时间非降序排列的比较函数
int compare(const void *a, const void *b) {return (((struct Activity *)a)->finish - ((struct Activity *)b)->finish);
}// 贪心算法解决活动选择问题
void activitySelection(struct Activity arr[], int n) {printf("Following activities are selected:\n");// 第一个活动总是被选中int i = 0;printf("%d ", i);// 对剩下的活动进行遍历for (int j = 1; j < n; j++) {// 如果这个活动的开始时间大于或等于上一个活动的结束时间,那么选择这个活动if (arr[j].start >= arr[i].finish) {printf("%d ", j);i = j;}}
}int main() {struct Activity arr[] = {{1, 2}, {3, 4}, {0, 6}, {5, 7}, {8, 9}, {5, 9}};int n = sizeof(arr) / sizeof(arr[0]);// 按照结束时间非降序排列qsort(arr, n, sizeof(arr[0]), compare);activitySelection(arr, n);return 0;
}

在这个例子中,我们首先定义了一个包含开始时间和结束时间的活动结构体,并实现了一个按照结束时间非降序排列的比较函数。然后使用贪心算法来解决活动选择问题,在主函数中定义了一些活动并按照结束时间排序,然后调用activitySelection函数进行活动选择。

http://www.dtcms.com/wzjs/490793.html

相关文章:

  • 江门网站建设推广策划长尾关键词排名推广
  • 怎么做网站分站推广赚佣金
  • 给我一个用c 做的网站网上卖货的平台有哪些
  • wordpress页面居中优化教程网站推广排名
  • 个人网站做多久有效果专业竞价托管
  • 网站开发分类企业管理8大系统
  • 菏泽网站建设便宜臻动传媒在线外链工具
  • 做网站编写代码事件营销案例
  • 赤峰网站开发公司查域名备案信息查询
  • 注册公司多少钱收费网站优化排名哪家性价比高
  • seo网站编辑关键词排名优化软件
  • 做软件的公司网站有哪些外贸谷歌优化
  • 推荐微信网站建设百度网络推广怎么做
  • 青岛制作企业网站的公司关键词可以分为哪三类
  • 做线上兼职哪个网站比较靠谱怎么做互联网营销推广
  • 网站设计制造扫描图片找原图
  • 网站开发客户阿里云案例近期时政热点新闻20条
  • 山东3个中高风险地区长沙靠谱seo优化价格
  • 上海做网站找谁泰州seo外包
  • 一个服务器能放多少网站山东服务好的seo公司
  • 网站建设支付抖音关键词排名
  • 网站上的动态图怎么做的交换友情链接的目的
  • 三亚市建设局网站公示个人在线网站推广
  • 帮企业做网站的公司最新做做网站
  • 电商网站做导购近期热点新闻事件
  • 长丰住房和建设局网站网络优化师
  • 衡水有做网站的吗百度域名查询
  • 谷城县城乡建设局网站网络营销专业是学什么的
  • jsp网站开发的教材营销培训视频课程免费
  • 云南省建设厅网站首页手机如何制作网页链接