《程序员》2007第八期之算法擂台

[color=pink]题目描述(手头没书,不知道有没有记错):[/color][color=green]有v个在一条直线上的村庄,要在其中的p个村庄上修建邮局。每个村庄将会选择离其最近的村庄收发邮件。现在要选择这p个邮局的修建地址,使得这v个村庄到邮局的总路程尽可能少。[/color]
[color=orange]输入:首先是两个正整数v,p,表示村庄个数与邮局个数。
然后是v个不小于零的整数,表示v个村庄的坐标。
输出:p从小到大个用空格分开的整数,表示p个邮局的坐标。[/color]

[color=blue]
这个题目用简单的重举法显然是行不通的,那样时间复杂度将达到阶乘级别。
我用的是动态规划,时间复杂度为O(n*n*(n+p)).不知道有没有更好的算法。
[/color]
[color=red]注意:这个题目的解实际上不唯一,比如v=2,p=1的情形,邮局修在村庄1与村庄2是一样的。[/color][/color]
[code]
/**
* &#Postoffice.java
* 算法描述:
* 记m(i,j)为前i个村庄设置j个邮局时最小的总路程,
* s(i,j)为从村庄i到j中(包括i,j)中设置一个村庄时需要的最小路程,则有:
* m(i,j) =min{ m(k,j-1)+s(k,i-1) : j-1<=k<=i-1}
* 则状态总数为 O(n*(p+n)),转移代价为O(n),故总体时间复杂度为O(n*n*(n+p))
* @author Eastsun
* @version 2.0 2008/8/27
*/
package eastsun.algorithm;

import java.util.*;

public class Postoffice {

private Postoffice() {
}

public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int v = s.nextInt();
int p = s.nextInt();
int[] villages = new int[v];
for (int index = 0; index < v; index++) {
villages[index] = s.nextInt();
}
for (int post : solve(villages, p)) {
System.out.println(post + " ");
}
}

/**
* 求解
* @param villages 村庄坐标
* @param p 邮局个数
* @return postoffices 按升序排列的邮局坐标
*/
public static int[] solve(int[] villages, int p) {
Arrays.sort(villages);
int v = villages.length;

//对于p<=2时,特殊处理
if (p <= 2) {
return solveX(villages, p);
}

//simple[i][j] 表示从村庄i到j(包括i,j)中放置一个邮局时这些村庄要走的路程
int[][] simple = new int[v][v];
for (int i = 0; i < v; i++) {
for (int j = i; j < v; j++) {
//此时,将邮局修在中间那个村庄可以得到最小路程
int pos = (i + j) / 2;
for (int k = i; k <= j; k++) {
simple[i][j] += k <= pos ? villages[pos] - villages[k] : villages[k] - villages[pos];
}
}
}

//min[i][j] 表示在villages[0...i-1]中修建j个邮局时最小的路程
int[][] min = new int[v + 1][p + 1];
//trace[i][j] 表示这j个邮局中最后一个邮局影响村庄的起始位置
int[][] trace = new int[v + 1][p + 1];
for (int i = 1; i <= v; i++) {
min[i][1] = simple[0][i - 1];
}
for (int j = 2; j <= p; j++) {
for (int i = j; i <= v; i++) {
min[i][j] = Integer.MAX_VALUE;
for (int k = j - 1; k <= i - 1; k++) {
if (min[i][j] > min[k][j - 1] + simple[k][i - 1]) {
min[i][j] = min[k][j - 1] + simple[k][i - 1];
trace[i][j] = k;
}
}
}
}
int[] postoffices = new int[p];
int end = v - 1;
for (int index = p - 1; index >= 0; index--) {
int begin = trace[end + 1][index + 1];
postoffices[index] = villages[(begin + end) / 2];
end = begin - 1;
}
return postoffices;
}

/**
* 对邮局个数为1或2时的处理
* 此时对应的时间复杂度为O(1) 与O(n*n)
*/
private static int[] solveX(int[] villages, int p) {
int v = villages.length;
if (p == 1) {
return new int[]{villages[(v - 1) / 2]};
} else {
int pos = 0;
int min = Integer.MAX_VALUE;
for (int index = 0; index < v - 1; index++) {
int p1 = index / 2;
int p2 = (index + v) / 2;
int tmp = 0;
for (int k = 0; k < v; k++) {
if (k <= index) {
tmp += k <= p1 ? villages[p1] - villages[k] : villages[k] - villages[p1];
} else {
tmp += k <= p2 ? villages[p2] - villages[k] : villages[k] - villages[p2];
}
}
if (tmp < min) {
min = tmp;
pos = index;
}
}
return new int[]{villages[pos / 2], villages[(pos + v) / 2]};
}
}
}[/code]
python:numpy分享(保姆级教程) 创建数组:array和ndarray、rand()、randn()、arange()、randint()、uniform()astype()基础函数:ceil()、floor()、rint()、argmax()、argmin()、cumsum()、cumprod()numpy 是数据分析必不可少的第三方库,具有高性能的特点,多用于做数组分析。内置函数:ceil()、floor()、rint()主要用于数组计算,支持多维数组。array和ndarray。比较函数:all、any。去重函数:unique。 阅读详情

相关推荐

大红球预警版-精选+自定义板块监控

这是一款简单易用的股票大单资金监控插件,兼容通达信软件,可嵌入分时图或定制版面。它以红绿圆球直观显示主力买卖情况(红球为买,绿球为卖),支持300万以上大单语音播报。插件提供实时资金流向分析、多股同时监控、自定义预警条件等功能,无需L2账号。用户可自由切换图形/列表模式,监控特定板块,并配合幻影软件实现自动交易。虽然上涨股通常红球占优,但需结合其他指标综合判断。该插件完全免费,包含详细视频教程,适合新手使用。

guleba的博客 1795

选择排序

选择排序

弱爆了的雪饼的博客 589

零售-公司间关联交易退货STO的实现方式

零售-公司间关联交易采购 STO-退货 集团公司下经常会出现一家公司和另外一家公司的公司间的关联交易,如跨公司销售、总分公司之间采购,分公司之间的采购等业务;通常公司间采购会采取STO的模式来实现(根据业务模式可以将库存转储统一做成STO的模式,公司间STO、同公司工厂间、同工厂库存地点间 的STO SAP都是支持的); 公司间STO 正向A向B采购都很熟悉,公司间退货STO的其实也是比较普遍的业务现象,很多实施着也将其做成反向的STO(B向A采购),而不是退货STO(A向B,item 选择return的标

weixin_45518759的博客 2839

用Java-数组 “打擂”

java l--数组擂台赛

不会飞的小飞侠24 1271

STM32F4实战:手把手教你实现USB OTG双模式切换(Host/Slave)

本文详细介绍了如何在STM32F4上实现USB OTG双模式切换(Host/Slave),包括硬件架构解析、软件实现机制、主机模式下的U盘读写以及从机模式下的自定义设备开发。通过实战案例和优化技巧,帮助开发者快速掌握USB双角色功能,提升嵌入式系统开发的灵活性和效率。

u9v0w的博客 730

大厂嵌入式面试常考八股文及算法

1.指向已被释放或无效的内存地址的指针是野指针。互斥锁是一种用于线程同步的机制,用于确保同一时间只有一个线程访问共享资源。多态是面向对象编程中的一种特性,它允许以一种统一的方式处理不同类型的对象,通过相同的接口可以表现出不同的行为。大小端(Endian)指的是在计算机存储和处理多字节数据时,字节的存储顺序。大端序(Big Endian):高位字节存储在低地址,低位字节存储在高地址。类似于将数字的高位放在左边,低位放在右边的表示方式。例如整数值0x12345678在内存中按照大端序排列为。

谢谢大家的关注 6161

java打擂台算法,打擂台算法.ppt

打擂台算法打擂台算法适用于: 求若干个数中的最大/小值 例题 找两数中的较大者 a=val(inputbox("请输入第一个数")) b=val(inputbox("请输入第二个数")) if a>=b then max=a else max=b endif print max 双分支的写法 (非打擂台的算法) 例题 找两数中的较大者 输入a 输...

weixin_33855603的博客 962

基于集成运放心电放大器设计(原创)

原创作者:einyboy or alert 最近在看美剧《危机边缘》关于边缘科学的案件,科技控可以看一下,但建议不在吃东西的时候看。想像力是创造的思想源头,动手能力则是创造的车床。 自认为是没有想像力的那类,只能发挥动手能力了。 心电测量简介 图1 心电极接线图 如图1心电测试一般使用3个心电极进行测量,各个电极的说明如下: RA: Right Arm缩写,右手电极 LA: L...

huandaohack的专栏 6926

java打擂台排序_C++擂台法排序

#includeusingnamespacestd;voidSort1(inta1[],intn){inti,j;inttemp,max;for(i=0;i#include using namespace std;void Sort1(int a1[],int n){int i,j;int temp,max;for(i=0;imax=i;for(j=0;jif(a1[max] < a1[j]...

weixin_30983563的博客 959

华为od 面试八股文_C语言_02_含答案

华为od 面试八股文_C语言_02_含答案

MISAYAONE的博客 2231

Allegro如何去掉PCB内层未使用的过孔孔环?

在用Allegro进行PCB设计过程中,遇到铺铜铜箔被焊盘大量割断,导致铺铜不完整,这样就会导致铺铜过电流太小,影响板的性能,严重的会导致板工作不稳定,甚至不工作。解决办法:是去掉内层未使用的过孔孔环,增大过铜箔面积。

bhxc809751502的博客 2575

《程序员》2007第十期算法擂台之JAVA解法

题目: [quote] 人和计算机做猜数游戏.人默想一个四位数,由计算机来猜.计算机将所猜的数据显示到屏幕上,并问两个问题:一,有几个数字猜对了;二,猜对的数字中有几个位置也对了.人通过键盘来回答这两个问题。计算机一次又一次地猜,直到猜对位置。 为了简化输入输出,计算机每次输出一个四位数,然后人输入两个用空格分开的数,分别表示有几个数字猜对,有几个数字位置也对。下面有某次猜...

JavaSxy的专栏 419

大厂硬件笔试机试题ASIC设计方向-卷3

本文提供了30道硬件工程师机试题目,涵盖数字逻辑、模拟电路、CMOS和信号处理等核心领域。选择题和判断题均配有详细解析,重点考察Verilog编程、CMOS特性、触发器设计、采样定理等知识点。题目难度适中但覆盖面广,如Verilog中阻塞/非阻塞赋值的区别、CMOS静态功耗来源、Nyquist采样定理、通用逻辑门判断等。备考建议强调掌握逻辑门设计、Verilog时序电路编写和CMOS特性理解。这些题目反映了华为等大厂硬件机试的典型考查内容,通过系统复习可有效提升机试成绩,为后续面试奠定基础。

启芯硬件的博客 545

《程序员》2007第九期之算法擂台

原题: 在8*8的棋盘上分布着n个骑士,他们想约在某一格中聚会.骑士每天可以像国际象棋中的马那样移动一次.请你计算n个骑士的最早聚会地点和要走多少天.要求尽早聚会,且n个人走的总步数最少,先到的骑士可以不再移动等待其它骑士. 输入: 从键盘输入n(0<n<=64),然后依次输入n个骑士的初始位置xi,yi(0<=xi,yi<=7) 输出 :以空格分隔的三个整数,分别为聚会点的x,y值,以及要...

JavaSxy的专栏 281

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

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

选择排序(打擂台法)

原理:通过比较首先选出最小的数放在第一个位置上,然后在其余的数中选择次小数放在第二个位置,以此类推,直到所有的数成为有序数列。 var arr=[9,8,7,6,5,4]; for(var i=0;i<arr.length-1;i++){//循环轮数 for(var j=i+1;j<arr.length;j++){每一轮需要比较的次数 i...

qq_44978147的博客 3212

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java打擂台排序_Java语法 | 排序算法入门

前言C: 在这个时代,算法,虽说不是家喻户晓吧,但也算是大多数人常挂在嘴上的新名词。诸如:美颜算法、人脸识别算法、推荐算法、压缩算法 .... ,我们也会经常听到有人在感叹算法的强大。"好厉害啊!我就在x宝看了看书包,然后一大堆书包推荐就来了。"(推荐算法)"拍照记得给我开美颜啊!!"(美颜算法)我们在前两篇入门了数据结构,数据结构和算法不分家,本篇,查老师带你入门一下算法。算法简介算法概述那何谓...

weixin_36388341的博客 972

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java打擂台排序_打擂法排序和选择法排序是一回事吗?

设对(16, 21, 49, 32, 08, 56, 25, 11)进行降序排序,构造胜者树(注意构造胜者树时是从叶子向根构造),两两进行比较,胜者进行下一轮,即进入到父结点,最后根就是最大者。56/ \49 56/ \ / \21 49 56 ...

weixin_39876282的博客 432

判断字符串是否可以通过交换相邻字符得到回文字符串,如果可以输出最少交换次数

#include using namespace std; int count=1;//全局变量,计数; int count1=0;//判断奇数个字母出现的次数 int Judge(char str[]); int Circle(char str[]); int Ci

wp123456xt的专栏 2362

打擂台算法

有一个3*4的矩阵,要求求出其中值最大的那个元素的值,以及其所在的行行号和列号#include int main() { int i,j,row=0,colum=0,max; int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};//定义数组并赋初值 max=a[0][0];//先认为a[0][0]最大 for(i=0;i<=2;i++) fo

韦婵娟 5520

让计算机来做猜数字

import java.io.*;//package com.maodajun.javaeye2;public class GuessNumber2{  public static void main(String[] argv) throws Exception  {    GuessNum gn = new GuessNum();    BufferedReader br = new

religiose的专栏 1988

算法—打擂台法

/*打擂法:先假定第一个为最大值,然后和后面一个一个比较。如:打擂台一致,先上一个人,有人挑战则上去,挑战成功则换人接着挑战,直至都挑战完毕为止。如:首先先假定8位最大,然后和5比,8大,8不变;和7比,8大,8不变;和9比,9大,替换成9;.....直至最后一个比较即可得出最大值。最小值则将max<arr[i]改成max>arr[i]即可*/ 1 #include &lt...

weixin_30823683的博客 3134

打擂台排序与冒泡排序(未完)

打擂台排序与冒泡排序 C code: #include #include void print_array(int *array, int n) { int i; for (i=0; i<n; i++) { printf("%d ", array[i]); } printf("\n"); } void

test1280 4563

打擂法

首先,打擂法不同于选择与冒泡,不是一种排序方法,只能用于找到最大最小值 用法:先设定一个初值(max、min),然后让后面逐渐进来的数与之比较,再赋值。if(k[max].count < k[add].count) //打擂法:先设定好一个初值,让后面进来的值,与之比较,再赋值。不需排序 k[max] = k[add];

congcong_i的博客 3062

有3个字符串,要求找出其中最大者

这道题目和我之前blog中和矩阵求值中使用的算法是一样的,都是使用打擂台算法进行解题。 https://blog.youkuaiyun.com/qq_42766201/article/details/83651471 接下来我们来看下思路: 这道题首先需要设立3个二维字符数组和1个临时的数组,两两对比,大的把小的比下去,将其赋值给临时二维数组。最后再输出临时二维数组。 #include&lt;stdio.h&...

qq_42766201的博客 3908
上一篇: 一个关于字符串操作的算法题
下一篇: 《程序员》2007第九期之算法擂台
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值