动态规划

动态规划之最优化原理与动态规划方程 目录动态规划引言1 动态规划原理1.1 最短路问题及其解法1.2 动态规划的基本概念和术语1.3 最优化原理与动态规划方程1.3.1 最优化原理1.3.2 逆序动态规划方程1.3.3 顺序动态规划方程1.4 动态规划基本定理 动态规划 引言   1951年,美国数学家贝尔曼(R.Bellman)等根据一类所谓多阶段决策问题的特性,提出了解决这类问题的“最优化原理”,并研究了许多实际问题,从而创立了最优化的一个新分支----动态规划。   动态规划没有统一的数学模型,对不同的问题要采用不同的方法去建立它们的模 阅读详情

第一题:找零钱问题

 

有数组penny,penny中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim(小于等于1000)代表要找的钱数,求换钱有多少种方法。

给定数组penny及它的大小(小于等于50),同时给定一个整数aim,请返回有多少种方法可以凑成aim。

分为有该种货币与无该种货币进行讨论,代码如下:

方法一.暴力法

class Exchange {
public:
    int func(vector<int>& penny, int index, int aim) {
        int res = 0;
        if (index == penny.size()) {
            res = aim == 0 ? 1 : 0;
            return res;
        }
        for (int i = 0; i*penny[index] <= aim; ++i) {
            res += func(penny, index+1, aim-i*penny[index]);
        }
        return res;
    }
    int countWays(vector<int> penny, int n, int aim) {
        if (penny.empty()) return 0;
        return func(penny, 0, aim);
    }
};

方法二.暴力记忆法

class Exchange {
public:
    int func(vector<int>& penny, int index, int aim, std::map<int, std::map<int, int>> &tmp_res) {
        int res = 0;
        if (index == penny.size()) {
            res = aim == 0 ? 1 : 0;
            return res;
        }
        for (int i = 0; i*penny[index] <= aim; ++i) {
            if (tmp_res.count(index + 1) && tmp_res[index+1].count(aim-i*penny[index])) {
                res += tmp_res[index+1][aim-i*penny[index]];
            }
            else {
                res += func(penny, index+1, aim-i*penny[index], tmp_res);
            }
        }
        tmp_res[index][aim] = res;//记录下已经求过的路径
        return res;
    }
    int countWays(vector<int> penny, int n, int aim) {
        if (penny.empty()) return 0;
        std::map<int, std::map<int, int>> tmp_res;
        return func(penny, 0, aim, tmp_res);
    }
};

方法三.普通的动态规划方法

class Exchange {
public:
    int countWays(vector<int> penny, int n, int aim) {
        
        vector<vector<int>> dp(n,vector<int>(aim+1,0));//表示0-n种货币拼成aim有多少种方法
        for(int i=0;i<n;++i){
            dp[i][0] = 1;
        }
        for(int i=0;i <= aim;++i){
            if(i % penny[0] == 0)
                dp[0][i]=1;
        }
        for(int i=1;i<n;++i){
           for (int j = 1; j < aim + 1; ++j){
               for (int k = 0; k*penny[i]<= j; ++k) {
                   dp[i][j] += dp[i-1][j-k*penny[i]];
               }
            }  
        }
        return dp[n-1][aim];
    }
};

方法四.改进后的动态规划法

class Exchange {
public:
    int countWays(vector<int> penny, int n, int aim) {
        
        vector<vector<int>> dp(n,vector<int>(aim+1,0));//表示0-n种货币拼成aim有多少种方法
        for(int i=0;i<n;++i){
            dp[i][0] = 1;
        }
        for(int i=0;i <= aim;++i){
            if(i % penny[0] == 0)
                dp[0][i]=1;
        }
        for(int i=1;i<n;++i){
           for (int j = 1; j < aim + 1; ++j)
           {
                if(j - penny[i]>=0)
                 {
                    dp[i][j] = dp[i][j - penny[i]] + dp[i - 1][j];
                }
                else
                {
                    dp[i][j] = dp[i - 1][j];
                }
            }  
        }
        return dp[n-1][aim];
    }
};

 

第二题:台阶问题

 

有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。

从后往前看,上第n级台阶,只能是从n-1级台阶迈一步或者从n-2级台阶迈二步到达。代码如下:

class GoUpstairs {
public:
    int countWays(int n) {
      
        int *dp = new int [n+1];
        if (n == 0)
            return 0;
        if (n == 1)
            return 1;
        if (n == 2)
            return 2;

        dp[0] = 0;
        dp[1] = 1;
        dp[2] = 2;

        for (int i = 3; i <= n; i++)
            dp[i] = (dp[i-1] + dp[i-2])%1000000007;//防止溢出,结果模1000000007

        return dp[n];
    }
};

 

第三题:矩阵最小路径和

 

有一个矩阵map,它每个格子有一个权值。从左上角的格子开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。

给定一个矩阵map及它的行数n和列数m,请返回最小路径和。保证行列数均小于等于100.

矩阵任意位置只能是从左边或者从上面到达次位置,代码如下:

class MinimumPath {
public:
    int getMin(vector<vector<int> > map, int n, int m) {
   
        vector<vector<int> > dp(n, vector<int>(m, 0));
        dp[0][0] = map[0][0];

        for (int i = 1; i < n; i++)
            dp[i][0] = dp[i-1][0] + map[i][0];

        for (int j = 1; j < m; j++)
            dp[0][j] = dp[0][j-1] + map[0][j];

        for (int i = 1; i < n; i++){
            for (int j = 1; j < m; j++){
                dp[i][j] = map[i][j] + min(dp[i-1][j], dp[i][j-1]);
            }
        }
        return dp[n-1][m-1];
    }
};

 

第四题:最长上升子序列LIS

 

这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。

给定一个序列A及它的长度n(长度小于等于500),请返回LIS的长度。

class LongestIncreasingSubsequence {
public:
    int getLIS(vector<int> A, int n) {
        
        int max, i, j;
        vector<int> dp(n, 1);//dp[i]表示以A[i]为末尾的最大上升子序列的长度
        for (i = 1; i < n; i++) {
            max = 1;
            for (j = 0; j < i; j++) {
                if (A[i] > A[j] && dp[j] + 1 > max){//以i结尾的序列的最长子序列可能来自前面任何一个序列
                    max = dp[j] + 1;
                }
            }
            dp[i] = max;
        }
        for (i = 0; i < n; i++)
            if (dp[i] > max)
                max = dp[i];
        return max;
    }
};

第五题:最长公共子序列LCS

 

给定两个字符串A和B,返回两个字符串的最长公共子序列的长度。例如,A="1A2C3D4B56”,B="B1D23CA45B6A”,”123456"或者"12C4B6"都是最长公共子序列。

给定两个字符串A和B,同时给定两个串的长度n和m,请返回最长公共子序列的长度。保证两串长度均小于等于300。

dp[i][j]表示字符串1以i结尾与字符串2以j结尾的最长公共子序列,可能来自dp[i-1][j],dp[i][j+1]与d[i-1][j-1],去三者最大值即可,代码如下

class LCS {
public:
    int findLCS(string A, int n, string B, int m) {
       
        vector<vector<int>> dp(n, vector<int>(m, 0));
        int i, j, max;
        for (i = 0; i < n; i++)
        {
            if (A[i] == B[0]){
                while (i < n) {
                    dp[i++][0] = 1;
                }
            }
        }
        for (j = 0; j < m; j++)
        {
            if (A[0] == B[j]){
                while (j < m) {
                    dp[0][j++] = 1;
                }
            }
        }
        for (i = 1; i < n; i++){
            max = 0;
            for (j = 1; j < m; j++){
                max = dp[i-1][j]>dp[i][j-1]?dp[i-1][j]:dp[i][j-1];
                if (A[i] == B[j]) {
                    if (dp[i-1][j-1]+1 > max)
                        max = dp[i-1][j-1] + 1;
                }
                dp[i][j] = max;
            }
        }
        return dp[i-1][j-1];
    }
};

第六题:最长公共连续子串

给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。

与上题不同的是,本题必须要是连续的,dp[i][j]表示字符串1以i结尾与字符串2以j结尾的最长公共连续子串,其值只可能来自于dp[i-1][j-1]+1或者为0,代码如下:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
    string str1, str2;
    int len1, len2;
    int ans;
    while (getline(cin, str1, '\n') ) {
        getline(cin, str2, '\n');
        len1 = str1.length();
        len2 = str2.length();
        ans = 0;
        vector<vector<int>> dp(len1+1, vector<int>(len2+1, 0));
        for (int i = 1; i <= len1; i++){
            for (int j = 1; j <= len2; j++) {
                if (str1[i-1] == str2[j-1]) {
                    dp[i][j] = dp[i-1][j-1] + 1;
                }
                if (dp[i][j] > ans)
                    ans = dp[i][j];
            }
        }
        cout << ans << endl;
    }
    return 0;
}

第7题:01背包问题

 

一个背包有一定的承重cap,有N件物品,每件都有自己的价值,记录在数组v中,也都有自己的重量,记录在数组w中,每件物品只能选择要装入背包还是不装入背包,要求在不超过背包承重的前提下,选出物品的总价值最大。

给定物品的重量w价值v及物品数n和承重cap。请返回最大总价值。

dp[i[j]表示物品为0~i-1,载重为j的情况下,总价值最大。dp[i][j]只可能来自于dp[i-1][j]与d[i-1][j-w[i-1]+v[i-1],取最大值即可。代码如下:

class Backpack {
public:
    int maxValue(vector<int> w, vector<int> v, int n, int cap) {
        
        vector<vector<int>> dp(n+1,vector<int>(cap+1, 0));
        int i, j;
        for (i = 1; i <= n; i++) {
            for (j = 1; j <= cap; j++){
                if (j-w[i-1]>=0) {
                    dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i-1]]+v[i-1]);
                }
                else {
                    dp[i][j] = dp[i-1][j];
                }
            }
        }
        return dp[n][cap];
    }
};

 

第八题:最优编辑问题

 

对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。

给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代价值均小于等于100。

dp[i][j]表示字符串1的字串0~i-1编辑成字符串2的子串0-j-1最小编辑距离,只可能来自dp[i-1][j]+c1,dp[i][j+1]]+c0,dp[i-1][j-1],dp[i-1][j-1]+c2,取四者最小值即可。代码如下:

class MinCost {
public:
    int findMinCost(string A, int n, string B, int m, int c0, int c1, int c2) {
        
        vector<vector<int>> dp(n+1, vector<int>(m+1, 0));//第0行与第0列为空
        int i, j;

        dp[0][0] = 0;
        for (i = 1; i <= n; i++)
            dp[i][0] = dp[i-1][0] + c1;
        for (j = 1; j <= m; j++)
            dp[0][j] = dp[0][j-1] + c0;
        for (i = 1; i <= n; i++){
            for (j = 1; j <= m; j++){
                int a, b, c;
                a = dp[i-1][j] + c1;
                b = dp[i][j-1] + c0;
                if (A[i-1] == B[j-1])
                    c = dp[i-1][j-1];
                else
                    c = dp[i-1][j-1] + c2;
                dp[i][j] = c < min(a, b)?c:min(a,b);
            }
        }
        return dp[n][m];
    }
};

【动态规划】不信看完你还不懂动态规划 1.什么是动态规划? 维基百科:动态规划(Dynamic programming,简称DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 使用场景:动态规划常常适用于有重叠子问题和最优子结构性质的问题。 dynamic programming is a m·· ethod for solving a complex problem by breaking it down into a collection of simpler subproblems. 简单来说,动态规划其 阅读详情

相关推荐

详解动态规划

对每个i=1,2,...,n-1,首先将钢条切割为长度为i和n-i的两段,接着求解这两段的最优切割收益ri,rn-i(每种方案的最优收益为两段的最优收益之和),这就构成了求解原问题的一种方案。分治算法和动态规划都是将大问题划分成多个子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。就是可选择列表是什么(求解问题的方案有多少种方案,最优解就是从n种方案中选择最优方案),其次才能从所有可能的选择中求出最值,这本身就是递归树的选择过程。要凑出的金额amount在选择的过程是动态变化的,它就是状态。

weixin_42083481的博客 1775

[动态规划] 换钱的最少货币数

【题目描述】     给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 【输入描述】     输入包括两行,第一行两个整数n(0<=n<=1000)代表数组长度和aim(0<=aim...

一个码农的前三十年 959

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8258

【每日一题】牛客:换钱的最少货币数(一维动态规划)

题目描述(传送门) 给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 输入描述: 输入包括两行,第一行两个整数n(0<=n<=1000)代表数组长度和aim(0<=aim<=5000),第二行n个不重复的正整数,代表arr 输出描述: 输出一个整数,表示组成aim的最小货币数,无解时输出-1. 示例 示例1 输入 3 20 5 2 3 输出 4 说明 20=5*

Josvin 1306

宝塔面板一键部署Z-Blog博客 - 内网穿透实现公网访问

Ubuntu系统作为Linux系统的一个重要分支,既有Linux系统的轻量化、高扩展性和长时间稳定运行,也拥有Windows一样的友好图形界面,因此可以作为熟悉服务器系统的良好选择。对于笔者来说,ubuntu系统最大的用处,就是可以让家里老旧的电脑重焕生机,让本已退居二线的电脑与cpolar内网穿透软件搭配,成为私人服务器,搭建自己喜欢的各种网站。今天,笔者就为大家介绍,如何使用cpolar内网穿透+Z-blog搭建私人博客网站。

m0_74808907的博客 3147

汇付天下聚合支付自助接入全流程详解(附JAVA/非JAVA环境配置指南)

本文详细解析了汇付天下聚合支付的自助接入全流程,涵盖JAVA与非JAVA环境下的实战配置。从接入前准备、架构理解、密钥获取,到JAVA SDK集成、核心支付代码拆解,以及Node.js/Python等环境的裸接口对接、签名生成与异步通知处理,提供了完整的避坑指南和上线检查清单,帮助开发者高效、稳健地完成支付系统集成。

wdx01234567的博客 515

使用动态规划兑换零钱(Java)

使用动态规划兑换零钱 (牛客网—牛客题霸算法篇—NC126) 题目描述 给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 如果无解,请返回-1. 思路 Java实现 使用动态规划 定义数组dp[] dp[i] 代表给定钱数为i的时候最少货币数,即要凑成 i 元钱,至少需要dp[i] 张arr中面值纸币。 当arr[j]>i,不能兑换。 当arr[j]<=i时,dp[i]=dp

ln01010的博客 1137

告别手动输入!用Access批量导入307种土壤数据到SWAT模型(附完整MDB操作流程)

本文详细介绍了如何利用Microsoft Access批量导入307种土壤数据到SWAT模型,显著提升数据录入效率。通过解析usersoil表结构、提供Access操作指南和VBA自动化脚本,帮助环境工程师避免手动输入错误,实现高效数据管理。文章还包含性能优化技巧和常见错误解决方案,是SWAT模型用户的实用指南。

weixin_28366053的博客 325

【编程题 动态规划】兑换零钱(一)(详细注释 易懂)

给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个aim,代表要找的钱数,求组成aim的最少货币数。 如果无解,请返回-1. 数据范围:数组大小满足 0≤n≤10000, 数组中每个数字都满足 0

qq_51901495的博客 1146

MSDN Win10镜像缺少驱动?这里有全面解决方案

针对MSDN Win10镜像缺少驱动的问题,本文提供了四种解决方案:厂商官网下载驱动程序、利用Windows更新获取驱动、使用第三方驱动更新工具以及使用集成驱动的Win10系统镜像。每种方案都有其优缺点,用户可以根据自己的需求和实际情况选择合适的方案。建议优先考虑官方渠道:官方渠道下载的驱动程序稳定可靠,是解决问题的首选方案。谨慎选择第三方工具:使用第三方工具时,务必选择信誉好、无广告捆绑的工具,并注意保护个人隐私和计算机安全。备份重要数据:在进行系统安装或更新前,务必备份重要数据以防丢失。

nntxthml的博客 1520

prplOS介绍

介绍prplOS是什么,特性、框架、编译等。

四儿家的小祖宗的博客 2121

[动态规划] 钱币找零

最近开始撸算法,emm…,些许艰难,幸而有信念来支撑,哈,加油。 钱币找零问题: 有数组penny,penny中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个整数aim(小于等于1000)代表要找的钱数,求换钱有多少种方法。给定数组penny及它的大小(小于等于50),同时给定一个整数aim,请返回有多少种方法可以凑成aim。 测试样例: [1,...

weixin_36451489的博客 345

【项目实战】功能安全目标有四个ASIL等级:A、B、C、D,ASIL D是最高的等级

功能安全是一种关注产品在异常情况下如何避免造成伤害的概念功能安全在汽车电子行业中非常重要。功能安全涉及到系统、电子和软件三个部分。(1)系统部分主要涉及概念设计(2)而具体的实施则是在电子和软件部分完成。

奶爸的编程之路,也就一周冷个三天 2826

动态规划常见类型总结

本文针对动态规划的常见类型进行总结。虽说总结的是动态规划,但顺便把递推也放了进来。严格来说,递推不属于动态规划问题,因为动态规划不仅有递推过程,还要有决策(即取最优),但广义的动态规划是可以包含递推的,递推是一类简单的、特殊的动态规划,毕竟动态规划与递推密不可分。动态规划类型主要分为纯粹动态规划问题和复合动态规划问题。 几点说明: 1、博主本人于2012年对信息学竞赛中的动态规划问题进行了总结...

FanJin的博客 2万+

基于 Simulink 的飞轮储能系统(Flywheel Energy Storage System, FESS)充放电协调控制实战教程

本教程详细介绍了基于Simulink的飞轮储能系统(FESS)建模与控制方法。系统采用永磁同步电机(PMSM)和背靠背变流器架构,包含机侧全速域矢量控制和网侧直流稳压控制。重点讲解了机电耦合建模、FOC控制算法实现、基于电压下垂的协调控制策略,以及混合储能系统设计思路。教程提供了MATLAB函数代码示例,并给出典型工况下的仿真波形分析指南,同时指出了常见问题解决方案。该模型可用于研究飞轮储能在调频、能量回收等场景的应用,为新能源消纳和微网稳定提供仿真工具。

MHD0815的博客 166

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

为什么你学不过动态规划?告别动态规划,谈谈我的经验

动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...

帅地 3万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

算法之动态规划

目录什么是动态规划 概念动态规划的特点动态规划的写法适用的场景何时使用动态规划核心套路区别 斐波那契理解动态规划 换零钱问题 区别 分治和动态规划 贪心和动态规划

一名在校大三学习JAVA 9705

蓝牙模块HM-10手册

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++之动态规划(动态规划入门)

好

m0_62755690的博客 8504

『动态规划』动态规划概述

1.动态规划创始人2.定义3.总体思想4.基本要素最优子结构重叠子问题5.备忘录法(记忆化搜索)6.斐波那契数列(备忘录法)7.数字三角形经典递归解法记忆化搜索(备忘录法)动态规划法(T(n)=O(n^2^))动态规划是将多阶段决策问题进行公式化的一种技术,它是运筹学的一个分支, 用于求解多阶段决策过程的最优化问题动态规划方程又称为贝尔曼方程。...

一个专注于客户端开发的技术er,不定期更新Android,Flutter,HormonyOS等方向的使用心得和感悟 2678

MATLAB 动态规划

动态规划是一种数学优化方法,它是一种在给定约束条件下,求解最优化问题的方法。动态规划的基本思想是将原问题分解为若干个子问题,先求解子问题的最优解,然后根据子问题的最优解,求解原问题的最优解。将原问题分解为子问题确定状态确定一些初始状态(边界状态)的值确定状态转移方程思想上类似于递归,但动态规划采用记录子问题的最优解的方法,避免了重复计算子问题的最优解,从而提高了计算效率;除此之外,动态规划通常采用自底向上的方法,而递归通常采用自顶向下的方法。

小嗷犬的博客 5041

《动态规划》— 动态规划分类

动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许...

69小石头的博客 1367

什么是动态规划?

什么是动态规划? 动态规划(Dynamic Programming)是一种分阶段求解决策问题的数学思想,它通过把原问题分解为简单的子问题来解决复杂问题.动态规划在很多领域都有着广泛的应用,例如管理学,经济学,数学,生物学. 动态规划适用于解决带有最优子结构和子问题重叠性质的问题. 最优子结构: 即是局部最优解能够决定全局最优解(也可以认为是问题可以被分解为子问题来解决),如果问题的最...

u010412301的博客 9622

动态规划专题(一维动态规划)

算法联系

qq_63523553的博客 1499

什么是动态规划(Dynamic Programming)?动态规划的意义是什么?

希望本文不仅能告诉你什么是动态规划,也能给你一种如何分析、求解动态规划问题的思考方式。0001b 动态规划介绍运筹学中的动态规划动态规划(Dynamic Programming,简称DP)是运筹学的一个分支,它是解决多阶段决策过程最优化的一种数学方法。把多阶段问题变换为一系列相互联系的的单阶段问题,然后逐个加以解决。这里提到动态规划其实是一种数学方法,是求解某类问题的一种方法,而不是一种特殊的算法,没有一个标准的数学表达式或明确定义的一种规则。比如我们接触过的”排序算法“,”二叉树遍历算法“等,这些算法都是

weixin_44145478的博客 4800
上一篇: 内存
下一篇: 发邮件与收邮件
Ftworld21
博客等级 码龄14年 150粉丝 527原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值