IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言【微项目11】—活动安排问题[求解元素最多的相容活动子集](采用贪心算法思想实现)【2021-12-11】 -> 正文阅读

[数据结构与算法]C语言【微项目11】—活动安排问题[求解元素最多的相容活动子集](采用贪心算法思想实现)【2021-12-11】

C语言【微项目11】—活动安排问题[求解元素最多的相容活动子集](采用贪心算法思想实现)【2021-12-11】


【TDTX】
【C99】
【注】相容活动:两活动之间可顺序化,即两个需要执行的时间段无重叠
如:活动A:开始点0,结束点3;活动B:开始点1,结束点6;则两活动不相容,有重叠时间段。

一、Txsf.c

#include <stdio.h>
#include <stdlib.h>
struct hd
{
	int inorder;//活动输入顺序 
	int start;
	int end;
};

int kx(const void* q,const void* p)
{

	 	//printf("%d %d\n",((struct hd*) q)->end,((struct hd*) p)->end); 
	 	return ((struct hd*) q)->end - ((struct hd*) p)->end;
}

int main()
{
	int n;
	int i;
	printf("输入活动个数n:");
	scanf("%d",&n);
	
	struct hd mhd[n];//C99
	
	for(i = 0;i < n;i++)
	{
		printf("输入第%d个活动-开始点与结束点:",i+1);
		scanf("%d %d",&(mhd[i].start),&(mhd[i].end)); 
		mhd[i].inorder = i+1;
	}
	qsort(mhd,n,sizeof(mhd[0]),kx);//stdlib中的qsort()函数,给mhd[n]结构体数组排序 

	puts("\n依照活动的结束时间点,按非递减快速排序所有活动,得到活动顺序为:"); 
	for(i = 0;i < n;i++)
	{
		printf("活动%d(开始-%d,结束-%d)\n",mhd[i].inorder,mhd[i].start,mhd[i].end);
	}
	

	int B[n];
	for(i = 0;i < n;i++)
	{
		//将B[n]数组全部初始化为-1
		B[i] = -1;
	}
	
	int tend = -1;
	int k = 0;
	
	tend = mhd[0].end;
	B[0] = 0;
	
	puts("\n按照贪心算法所得活动执行顺序集合为:\n");
	
	puts("1.一边选择活动一边输出该元素:");
	printf("\n活动%d",mhd[0].inorder);
	
	for(i = 0;i < n;i++)
	{
		if( tend <= mhd[i].start )
		{
			B[k++] = i;//记录被选中活动在排序后mhd[n]数组中的位置 
			printf("-活动%d",mhd[i].inorder);
			
			tend = mhd[i].end;
		}
	}
	
	puts("\n");
	
	puts("2.通过记录数组B[n]输出结果:");
	printf("\n活动%d",mhd[0].inorder);
	for(i = 0;i < n;i++)
	{
		if(B[i] == -1)
		{
			break;
		}
		printf("-活动%d",mhd[B[i]].inorder);
	 } 
	
	puts(""); 
	system("pause");
	return 0;
}

二、 运行结果示例

2.1 输入8个活动

8
3 6
1 3
5 9
0 2
7 9
9 12
9 11
12 14
在这里插入图片描述

2.2 输入9个活动

9
3 6
1 3
5 9
0 2
7 9
9 12
9 11
12 14
2 5
在这里插入图片描述


------------------------------------------------------第十一次发项目类文章有点激动啊!-----------------------------------------------------
-----------------------------------------------------【C语言—微项目—自编练习】----------------------------------------------------------
----------------------------------------------------------------【TDTX】--------------------------------------------------------------------------

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:06:58  更:2021-12-13 13:07:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:27:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码