【数据结构和算法设计】算法篇(7) 贪心法 多机调度、最优装载问题

【回溯法】简单装载问题与复杂装载问题 [问题描述] 有n个集装箱要装上一艘载重量为W的轮船,其中集装箱i ( 1≤i≤n)的重量为wi。不考虑集装箱的体积 限制,现要这些集装箱中选出若干装上轮船, 使它们的重量之和等于W ,当总重量相同时要求选取的集装箱个数尽可能少。 对于第i层的某个分枝结点,对应的调用状态是dfs (num, tw, rw, op,i) ,对应的扩展结点有2个: ●选择第i个 ➢op[i]=1 , num=num+1, tw=tw+w[i], rw=rw-w[i],转到下一个状态dfs(num, tw, rw,op.. 阅读详情

7.7 求解最优装载问题

【问题描述】有 nnn 个集装箱要装上一艘载重量为 WWW 的轮船,其中集装箱 i (1≤i≤n)i\ (1\le i \le n)i (1≤i≤n) 的重量为 wiw_iwi​ 。不考虑集装箱的体积限制,现要选出尽可能多的集装箱装上轮船,使它们的重量之和不超过 WWW 。

【问题求解】5.3.1小节讨论了简单装载问题,采用回溯法选出尽可能少的集装箱个数。这里的最优解是选出尽可能多的集装箱个数,并采用贪心法求解。当重量限制为 WWW 时,wiw_iwi​ 越小、可装载的集装箱个数越多,所以采用「优先选取重量轻的集装箱装船」的贪心思路,如图7.5所示。
在这里插入图片描述

对 wiw_iwi​ 从小到大排序,得到 (w1,w2,…,wn)(w_1, w_2, \dots, w_n)(w1​,w2​,…,wn​) 。设最优解向量为 x=(x1,x2,…,xn)x = (x_1, x_2, \dots, x_n)x=(x1​,x2​,…,xn​) ,显然,x1=1x_1 = 1x1​=1 ,则 x′=(x2,…,xn)x' = (x_2, \dots, x_n)x′=(x2​,…,xn​) 是装载问题 w′=(w2,…,wn),W′=W−w1w' = (w_2, \dots, w_n), W' = W - w_1w′=(w2​,…,wn​),W′=W−w1​ 的最优解,满足贪心选择、最优子结构性质。对应的完整程序如下:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20;						// 最多集装箱个数

// 问题表示
int n = 5, W = 10;
int w[] = {0, 5, 2, 6, 4, 3};				// 各集装箱重量,不用下标为0的元素
// 求解结果表示
int maxw = 0;								// 存放最优解的总重量
int x[MAXN];								// 存放最优解向量
void solve() {								// 求解最优装载问题
	memset(x, 0, sizeof(x));				// 初始化解向量
	sort(w + 1, w + n + 1);					// w[1...n]递增排序
	int restw = W;							// 剩余重量
	for (int i = 1; i <= n && w[i] <= restw; ++i) {
		x[i] = 1;							// 选择集装箱i
		restw -= w[i];						// 减少剩余重量i
		maxw += w[i];						// 累计装载总重量
	}
}
int main() {
	solve();
	printf("最优方案\n");
	for (int i = 1; i <= n; ++i)
		if (x[i] == 1)
			printf("  选取重量为%d的集装箱\n", w[i]);
	printf("总重量=%d\n", maxw);	
	return 0;	
}

上述程序的执行结果如下:
在这里插入图片描述
【算法分析】算法的时间主要花费在排序上,时间复杂度为 O(nlog⁡2n)O(n\log_2 n)O(nlog2​n) 。


7.8 求解多机调度问题

【问题描述】设有 nnn 个独立的作业 {1,2,…,n}\{ 1, 2, \dots, n\}{1,2,…,n} ,由 mmm 台相同的机器 {1,2,…,m}\{ 1, 2, \dots, m\}{1,2,…,m} 进行加工处理,作业 iii 所需的处理时间为 ti (1≤i≤n)t_i\ (1 \le i \le n)ti​ (1≤i≤n) ,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断,任何作业也不能拆分成更小的子作业。多机调度问题要求,给出一种作业调度方案,使所给的 nnn 个作业在尽可能短的时间内、由 mmm 台机器加工处理完成。

【问题求解】采用贪心思路,让最长处理时间的作业优先,即把处理时间最长的作业分配给最先空闲的机器。这样可以保证处理时间长的作业优先处理,从而在整体上获得尽可能短的处理时间。按照最长处理时间的作业优先的贪心策略:

  • 当 m≥nm \ge nm≥n 时,只要将机器 iii 的 [0,ti)[0, t_i)[0,ti​) 时间区间分配给作业 iii 即可;
  • 当 m<nm < nm<n 时,首先将 nnn 个作业依其所需处理时间从大到小排序,然后依此顺序、将作业分配给空闲的处理机。

例如,有 n=7n = 7n=7 个独立的作业 (1,2,3,4,5,6,7)(1, 2, 3, 4, 5, 6, 7)(1,2,3,4,5,6,7) ,由 m=3m = 3m=3 台机器 (1,2,3)(1, 2, 3)(1,2,3) 处理,各机器所需的处理时间如表7.3所示。采用贪心法求解的过程如下:
在这里插入图片描述

  1. 777 个作业按处理时间递减排序,其结果如表7.4所示。
  2. 先将排序后的前三个作业分配给三台机器,此时机器的分配情况为 ({4},{2},{5})(\{4\}, \{ 2\}, \{ 5\})({4},{2},{5}) ,对应的总处理时间为 (16,14,6)(16, 14, 6)(16,14,6) 。接着分配余下的作业。
  3. 分配作业 666 :三台机器中机器 333 在时间 666 后最先空闲,将作业 666 分配给它,此时机器的分配情况为 ({4},{2},{5,6})( \{ 4\} , \{ 2\}, \{ 5, 6\})({4},{2},{5,6}) ,对应的总处理时间为 (16,14,6+5=11)(16, 14, 6 + 5 = 11)(16,14,6+5=11) 。
  4. 分配作业 333 :三台机器中机器 333 在时间 111111 后最先空闲,将作业 333 分配给它,此时机器的分配情况为 ({4},{2},{5,6,3})(\{ 4\}, \{ 2\}, \{ 5, 6, 3\})({4},{2},{5,6,3}) ,对应的总处理时间为 (16,14,11+4=15)(16, 14, 11 + 4 = 15)(16,14,11+4=15) 。
  5. 分配作业 777 :三台机器中机器 222 在时间 141414 后最先空闲,将作业 777 分配给它,此时机器的分配情况为 ({4},{2,7},{5,6,3})( \{4\}, \{ 2, 7\}, \{ 5, 6, 3\})({4},{2,7},{5,6,3}) ,对应的总处理时间为 (16,14+3=17,15)(16, 14+3=17, 15)(16,14+3=17,15) 。
  6. 分配作业 111 :三台机器中机器 333 在时间 151515 后最先空闲,将作业 111 分配给它,此时机器的分配情况为 ({4},{2,7},{5,6,3,1})( \{4\}, \{2, 7\}, \{ 5, 6, 3, 1\})({4},{2,7},{5,6,3,1}) ,对应的总处理时间为 (16,17,15+2=17)(16, 17, 15+2=17)(16,17,15+2=17) 。

由于每次需要求出最先空闲的机器,即求正在执行作业的 ttt 最小的机器,为此要采用小根堆,堆中的作业是正在执行的作业,最多 mmm 个作业。当某个机器执行的作业的 ttt 最小时,它最先出队,加上当前安排的作业 jjj 的执行时间,然后继续进队执行。

对应的完整求解程序如下:

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;

// 问题表示
int n = 7;
int m = 3;
struct NodeType {									// 优先队列结点类型
	int no;											// 作业序号
	int t;											// 执行时间
	int mno;										// 机器序号
	bool operator<(const NodeType &s) const {
		return t > s.t;								// 小根堆
	}
};
NodeType A[] = {{1, 2}, {2, 14}, {3, 4}, {4, 16}, {5, 6}, {6, 5}, {7, 3}};
void solve() {										// 求解多机调度
	if (n <= m) {
		printf("为每个作业分配一台机器\n");
		return;
	}
	sort(A, A + n);									// 按t递减排序
	priority_queue<NodeType> pq;					// 小根堆
	for (int i = 0; i < m; ++i) {					// 首先分配m个作业,每台机器一个作业
		A[i].mno = i + 1;							// 作业对应的机器编号
		printf("    给机器%d分配作业%d, 执行时间为%2d, 占用时间段: [%d, %d)\n",
			A[i].mno, A[i].no, A[i].t, 0, A[i].t);
		pq.push(A[i]);
	}
	for (int j = m; j < n; ++j) {					// 分配余下的作业
		NodeType e = pq.top(); pq.pop();
		printf("    给机器%d分配作业%d, 执行时间为%2d, 占用时间段: [%d, %d)\n",
			e.mno, A[j].no, A[j].t, e.t, e.t + A[j].t);
		e.t += A[j].t;
		pq.push(e);
	}
}
int main() {
	printf("多机调度方案\n");
	solve();		
	return 0;
}

程序的执行结果如下:
在这里插入图片描述

【算法分析】排序的时间复杂度为 O(nlog⁡n)O(n\log n)O(nlogn) ,两次循环的时间分别是 m, (n−m)log⁡mm,\ (n -m) \log mm, (n−m)logm ,所以本算法的时间复杂度为 O(nlog⁡n)O(n\log n)O(nlogn) 。

多机调度是NP难问题,到目前为止还没有有效的算法,上述算法是采用贪心法求得的一个较好的近似解。可以通过一个反例,说明上述算法得到的不一定是最优解。例如,n=7,m=3n = 7, m = 3n=7,m=3 ,作业的执行时间 ={16,14,12,11,10,9,8}= \{16, 14, 12, 11, 10, 9, 8\}={16,14,12,11,10,9,8} 。

  • 按照该算法得到的结果是 313131 ,对应的方案是:机器一执行时间长度为 16,916, 916,9 的作业(总时间 252525 ),机器二执行时间长度为 14,1014, 1014,10 的作业(总时间为 242424 ),机器三执行时间长度为 12,11,812, 11, 812,11,8 的作业(总时间为 313131 )。
  • 然而一个最优解是 272727 ,对应的方案是:机器一执行时间长度为 16,1116, 1116,11 的作业(总时间 272727 ),机器二执行时间长度为 14,1214, 1214,12 的作业(总时间为 262626 ),机器三执行时间长度为 10,9,810, 9, 810,9,8 的作业(总时间为 272727 )。
多机调度问题【贪心算法】 多机调度问题思路 1.把作业按加工所用的时间从大到小排序 2、如果作业数目比机器的数目少或相等,则直接把作业分配下去 3、 如果作业数目比机器的数目多,则每台机器上先分配一个作业,如下的作业分配时,是选那个表头上 s 最小的链表加入新作业 可以考虑以下的贪心策略: (1)最长处理时间作业优先的贪心选择策略。 (2)最短处理时间作业优先的贪心选择策略。 (3)作业到达时间优先的贪心选择策略。 *贪⼼策略:优先处理花费时间长的任务,这样可以减少短任务的等待时间. 问题描述 形式:有n个任务,m台机器,n&g 阅读详情

相关推荐

最优装载 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。

Description 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。 编程任务: 对于给定的n个集装箱和轮船的载重量C,编程计算装入最多时的集装箱个数。 Input 输入由多组测试数据组成。 每组测试数据输入的第1行中有2个正整数n和C。正整数n是集装箱个数;正整数C是轮船的载重量。接下来的一行中有n个整数,分别表示n个集装箱的重量,它们之间用空格分隔。 Output 对应每组输入,输出的每行是计算出的装入最多时的集装箱个数。 Sample Input 4 5 3 5 2 1 Sample Output 2

最优装载问题(贪心算法)

问题描述: 有一批集装箱要装上一艘载重量为c的轮船。其中集装箱i的重量为Wi。最优装载问题要求确定在装载体积不受限制的情况下,将尽可能多的集装箱装上轮船。(意思就是在不超过载重量的情况下最多能装多少) 大体思路: 首先用数组承载每个集装箱的重量 为了方便,给数组排个序 循环小于集装箱数量 方法一:每个重量累加判断是否超过载重量 方法二:定义剩余变量,剩余变量减每个的重量,然后判断每个的重量是否...

WGS. 1万+

华为防火墙 策略路由实现多ISP接入Internet

PC3上网访问Server1时走ISP1。PC4上网访问Server1时走ISP2。1、配置接口IP并加入相应的安全区域。二、ISP2 运营商 R2路由器。一、ISP1 运营商 R1路由器。

一直被模仿,从未被超越 3014

贪心算法--最优装载问题

题 目 贪心算法–最优装载问题 学 院 信息工程学院 年级专业 班 级 学 号 姓 名 指导教师 目录第1章 问题描述 11.1问题描述 11.2数字实例 1第2章 算法思想及算法设计分析 22.1基本思想 22.2贪心算法原理 22.3贪心算法基本要素 22.4贪心算法求解的三个步骤 32.5使用贪心算法解决最优装载问题 32.6解题思路 32.7系统流程图 4第3章 程序编码与复杂性分析 53.1编码实现 53.2 编码优化 63.3算法复杂度分析 6第

weixin_46790290的博客 7465

Ubuntu系统下STM32开发环境搭建:从零配置CubeMX、VSCode与OpenOCD调试实战

本文详细介绍了在Ubuntu系统下搭建STM32开发环境的完整流程,包括CubeMX、VSCode和OpenOCD的安装配置。通过实战教程指导开发者从基础环境准备到工程创建与调试,提供高效的嵌入式开发解决方案,并分享常见问题解决方法。

potato的博客 941

某瓜数据app 获取达人直播商品信息接口 Sign

某瓜数据app 获取达人直播商品列表接口 Sign

自成背后的博客 6039

【数据结构和算法设计】算法篇(7) 贪心法

文章目录7.1 贪心法概述7.1.1 什么是贪心法7.1.2 用贪心法求解的问题应具有的性质7.1.3 贪心法的一般求解过程7.2 求解活动安排问题7.3 求解背包问题7.4 求解最优装载问题7.5 求解田忌赛马问题7.6 求解多机调度问题7.7 哈夫曼编码7.8 求解流水作业调度问题其他题目 贪心法 Greedy Algorithm 是一种典型的算法设计策略,用于求解问题的最优解,这里介绍用贪心法求解问题的一般方法,并讨论一些采用贪心法求解的经典示例。 7.1 贪心法概述 7.1.1 什么是贪心法

memcpy0的博客 2474

CAN 通信测试工具 canutils

概述 CAN,Controller Area Network,控制器局域网,一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。 canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下: canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。 candump...

一个软件工程师的技术笔记 1万+

算法与数据结构-贪心法

​ 贪心法的基本思路是在对问题求解时总是做出在当前看来是最好的选择,也就是说贪心法不从整体最优上加以考虑,所做出的仅是在某种意义上的局部最优解。​ 人们通常希望找到整体最优解,所以采用贪心法需要证明设计的算法确实是整体最优解或求解了它要解决的问题。1 贪心选择性质所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。也就是说,贪心法仅在当前状态下做出最好选择,即局部最优选择,然后再去求解做出这个选择后产生的相应子问题的解。2 最优子结构性质​

weixin_45982141的博客 1822

C#身份验证黑科技:用量子级加密与多维防御矩阵构建坚不可摧的用户管理系统!

某金融系统因身份验证漏洞导致200万用户数据泄露,量子级防御可将攻击面缩小99.99%。

墨夶的博客 353

搭建ROS小车真的难吗?

搭建ROS小车真的难吗?不难 1.引言 本着为大家谋福利的心态,根据自己以往的开发经验,打算写一个从零开始制作一个可以实现地图构建和导航的ROS小车。目前某宝上面有很多现成产品,但是我个人认为,一个好的移动机器人开发工程师,应该对机器人的整个流程都能具备维护的能力,然后再深入研究其中一个方向即可。看到网上很少有整个系列的开发教程,看到同学们大多东拼西凑,浪费了不少时间。我就想着利用空余时间,将我本人的开发过程输出给大家。有基础理论、有实际工程代码、有丰富的学习资料,尽最大努力帮大家进入移动机器人的大门。 国

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

贪心算法的正确性证明

贪心算法的正确性证明 摘要 贪心算法最难的部分就是正确性的证明,常用的方法有归纳法(对算法步数归纳、对问题归纳)和交换论证法(从最优解出发,不变坏地替换,得到贪心策略的解)。下面以三个例子说明这些正确性证法。 活动选择问题——对算法步数归纳 最优装载问题——对问题规模归纳 最小延迟调度——交换论证 我的个人博客上的原文链接 活动选择问题 问题 S={1,2,…,n}S = \{ 1,2,…,n...

pkueecscss的博客 3万+

以宠辱之戒写 SAP Fiori Elements,把标准能力当成身体,把扩展冲动当成大患

SAP Fiori Elements开发中常面临业务方追求"独特页面"的压力,但过度自定义会破坏框架价值。老子"宠辱若惊"的智慧提醒开发者:不应因用户称赞或批评而动摇架构原则。标准模板的价值在于确保业务语义、交互规范和后端服务的一致性。扩展应遵循官方API,将业务逻辑放在ABAP/CDS层而非前端控制器。成熟项目会平衡标准与定制,使用annotation表达UI行为,仅在必要时通过受支持的extension points进行增强,保持系统的长期可维护性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 998

程序员都会的五大算法之三(贪心算法),恶补恶补恶补!!!

五大算法之三贪心算法,又名贪婪算法,即只考虑当下,不管未来。点进来保你快速掌握贪心法啦。

lltqyl的博客 1120

【YOLO26创新改进】TGRS 2026 | Transformer变体改进篇 | 使用CGTA曲率引导令牌注意力,改善结构与纹理的整体协调,适合遥感小目标检测、旋转目标检测、实例分割任务

本文在YOLO26目标检测模型中引入CGTA曲率引导令牌注意力模块,依据曲率显著性与特征可靠性,从高分辨率特征图中筛选少量关键令牌,再让全部位置与这些代表性特征进行全局交互,从而以较低计算和显存开销建立远距离目标、背景及跨尺度结构之间的联系;该模块能够重点强化车辆、舰船、飞机、建筑等目标的边缘、转角和弯曲轮廓,改善小目标、密集目标及旋转目标的特征完整性与定位稳定性,并通过可靠性门控抑制噪声和伪边缘,通过标准注意力与曲率注意力融合避免平坦区域被过度增强。

AI魔改博士-中大博士 46

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

算法分析与设计2-5章节测试

1【单选题】找零钱问题的贪心策略是() A、面值大的钱币优先找出 B、面值小的钱币优先找出 C、面值小于待找钱数且面值最大的优先找出 D、以上都不对 正确答案: C 2【单选题】最优装载问题的贪心策略是() A、体积大的集装箱优先找出 B、体积小的集装箱先找出 C、重量大的集装箱优先装 D、重量小的集装箱优先装 **正确答案: D ** 3【单选题】会场安排问题的最好的贪心策略是() A、开始时间...

qq_43437122的博客 1462

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

第一章 算法与数据结构

基本算法 Basic Arithmetic

我佛很悲 297

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

算法设计与分析

算法基础 问题求解的关键 建模: 对输入参数和解给出形式化或半形式化的描述 设计算法: 采用什么算法设计技术 正确性--是否对所有的实例都得到正确的解 分析算法--效率 算法+数据结构=程序 好的算法 提高求解问题的效率 节省存储空间 算法的研究目标 问题->建模并寻找算法 算法设计技术 算法->算法的评价

wenhui12345的博客 8037

算法设计与分析(第4版)

算法:解决问题的方法或过程程序:算法用某种程序设计语言的具体实现。

qq_35414977的博客 1276

回溯法解决装载问题:从原理到优化与工程实践

在算法设计与组合优化领域,回溯法是一种系统探索问题所有可能解的通用搜索策略。其核心原理是深度优先遍历解空间树,通过尝试与回退机制,在满足约束条件的路径中寻找最优解。该技术在解决资源分配、任务调度等NP-hard问题上具有重要价值,尤其适用于子集选择、排列组合等经典场景。本文聚焦于装载问题这一典型应用,深入剖析如何通过约束剪枝和限界剪枝等优化策略,将指数级复杂度降至可接受范围,并结合排序预处理等工程实践,大幅提升算法效率。文中涉及的递归实现、状态管理和解向量保存等关键细节,为理解和应用回溯法解决实际问题提供了

weixin_34032621的博客 430

【算法设计与分析】屈婉玲教授—课程笔记

北大公开课——屈婉玲教授《算法设计与分析》课程简记

小徐!勿忘初心! 2615

算法竞赛Day2--贪心法

概念:将方案分成若干个小问题,取每个小问题的最优解。 什么时候使用贪心法:能从局部最优扩展到全局最优。 常见问题:①活动安排(区间调度)②区间覆盖问题③最优装载问题 本质:排序,然后从一边看问题 例题: 见收藏夹。。。。 ...

QXK_Jack的博客 160

贪心算法

目录 一.贪心算法的一些东西 1.思想 2.引例 3.贪心算法的基本要素 4.贪心算法的基本思路 5.贪心算法适用的问题 6.贪心算法实现框架 二.贪心实例 1.背包问题 2.最优装载问题 3.哈夫曼编码 4.单源最短路径 Dijkstra算法(会填写表) 5.最小生成树(会画出图) ①Prime Algorithm(按顶点) ②Kruskal Algorithm(...

学点什么好呢 1万+

计算机算法设计与分析教学大纲,算法设计与分析的教与学(教学大纲)

原标题:算法设计与分析的教与学(教学大纲)课程代码:****课程负责人: ****课程中文名称:算法设计与分析课程英文名称:Designand Analysis of Algorithms课程类别:必修课程学分数:3课程学时数:54授课对象:计算机科学与技术及相关专业本科本课程的前导课程:高等数学、离散数学、数据结构一、教学目的(黑体五号)本课程是计算机科学与技术专业的专业必修课。开设本课程的目的...

weixin_42438750的博客 578

C++实现贪心算法解决分数背包问题:原理、代码与优化

贪心算法是一种在每一步选择中都采取当前最优决策的算法思想,其核心在于通过局部最优解逐步构建全局最优解。该算法适用于具有贪心选择性质和最优子结构的问题,能够以较低的时间复杂度高效求解。在工程实践中,贪心算法常用于资源分配、任务调度等优化场景,尤其适合处理可分割的物品选择问题。分数背包问题作为组合优化中的经典模型,允许物品被部分装入背包,这为贪心算法提供了用武之地。通过计算物品的价值密度(价值/重量)并排序,贪心策略能确保每次选择单位容量价值最高的物品,从而在O(N log N)时间内获得最优解。本文以C++实

weixin_33738982的博客 296
上一篇: 【数据结构和算法设计】算法篇(7) 贪心法
下一篇: 算法学习笔记 全源最短路径Johnson算法(用于稀疏图和有负边的图)
memcpy0
博客等级 码龄9年 2001粉丝 1591原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值