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

张掖网站建设培训班做百度推广的网络公司广州

张掖网站建设培训班,做百度推广的网络公司广州,wordpress做移动商城,电子商务网站设计的基本要求贪心算法(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/324223.html

相关文章:

  • 廊坊建设企业网站今天新疆新闻头条
  • 购物商城网站的运营广州新闻发布
  • 中国十大知名网站建设企业产品营销策划推广
  • 惠山做网站公司西安seo优化
  • 免费制作自己的微网站吗宁波seo网页怎么优化
  • 基于html5设计的网站建设开网站需要投资多少钱
  • xml天气预报网站怎么做sem是什么职位
  • 网站建设技术服务费怎么入账百度总部投诉电话
  • 网站备案 机构需要什么手续百度竞价排名公司
  • 个人电脑做服务器网站百度投诉热线中心客服
  • 梅兰商贸网站开发设计简介新型实体企业100强
  • 网站在线留言如何做谷歌seo外链
  • 关于进一步完善网站建设的请示竞价防恶意点击
  • 自己做电影网站违法东莞网站营销推广
  • 金山集团网站建设太原网站快速排名提升
  • 试列出网站开发建设的步骤搜狗网址
  • 做html5网站免费申请网站
  • wordpress电脑版seo优化有哪些
  • 黄浦b2c网站制作价格重庆网络seo
  • 网站关键字语法重庆网站搭建
  • 开发安卓软件需要学什么免费seo视频教学
  • 怎么做免费个人网站网站制作公司有哪些
  • 男人和女人床上做性视频网站快速建站哪个平台好
  • 思淘网站建设设计模板网站
  • 自己网站做电子签章有效么推广代理
  • html5简单政府网站模板企业管理8大系统
  • 房产网站建设手机怎么建自己的网站
  • 做时尚网站取个名字百度公司图片
  • 北京网站建设公司哪个最好模板网站建站哪家好
  • 小型服务器做网站惠州百度关键词优化