hdu 1043(经典搜索)

JW01二氧化碳传感器实战:5分钟搞定Arduino环境监测系统(附完整代码) 本文详细介绍了如何使用JW01二氧化碳传感器与Arduino快速搭建环境监测系统。通过简单的硬件连接和完整的代码示例,读者可以在5分钟内实现CO2浓度实时监测,并了解数据解析、常见问题解决及进阶应用扩展。JW01传感器的高精度和易用性使其成为创客和嵌入式开发者的理想选择。 阅读详情

题意:

给你一个初始的图,然后每次输入一个图,要求移动x最小的步数达到和初始图一样,输出路径

1  2  3  4     1  2  3  4     1  2  3  4     1  2  3  4
 5  6  7  8     5  6  7  8     5  6  7  8     5  6  7  8
 9  x 10 12     9 10  x 12     9 10 11 12     9 10 11 12
13 14 11 15    13 14 11 15    13 14  x 15    13 14 15  x
            r->            d->            r->

好像有很多中方法解决这个问题:八数码的八个境界

①bfs + 康托展开+打表         /* 其他的还不会,有空去试试 - -

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <algorithm>
typedef long long ll;
using namespace std;

const int MAXN=362900;//最多是9!/2
int fac[]= {1,1,2,6,24,120,720,5040,40320,362880}; //康拖展开判重
//         0!1!2!3! 4! 5!  6!  7!   8!    9!
bool vis[MAXN];//标记
char path[MAXN][40];//记录路径
int cantor(int s[])//康拖展开求该序列的hash值
{
    int sum=0;
    for(int i=0; i<9; i++)
    {
        int num=0;
        for(int j=i+1; j<9; j++)
            if(s[j]<s[i])num++;
        sum+=(num*fac[9-i-1]);
    }
    return sum+1;
}

struct node
{
    int matri[10];
    int position;
    char path[50];
    int state;
};

queue<node>que;
char dire[5] = "dlur";
int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};

void bfs()
{
    memset(vis,false,sizeof(vis));
    node cur;
    for(int i = 0; i < 8; i++)
        cur.matri[i] = i+1;
    cur.matri[8] = 0;
    cur.state = 46234;
    cur.path[0] = '\0';
    cur.position = 8;
    que.push(cur);
    vis[cur.state] = true;
    path[cur.state][0] = '\0';
    while(!que.empty())
    {
        cur = que.front();
        que.pop();
        int x = cur.position/3;
        int y = cur.position%3;

        for(int i = 0; i < 4; i++)
        {
            int tx = x + dir[i][0];
            int ty = y + dir[i][1];
            if(tx < 0 || tx > 2 || ty < 0 || ty > 2)
                continue;
            node t = cur;

            t.position =tx*3+ty;
            t.matri[cur.position] = t.matri[t.position];
            t.matri[t.position] = 0;
            t.state =cantor(t.matri);
            if(!vis[t.state])
            {
                path[t.state][0] = t.path[0] = dire[i];
                int len = strlen(cur.path);
                for(int j = 1;j <= len+1;j++)
                    path[t.state][j] = t.path[j] = cur.path[j-1];
                vis[t.state] = true;
                que.push(t);
            }
        }
    }
}

char ch;
int q[10];
int main()
{
    bfs();
    while(cin >> ch)
    {
        if(ch == 'x')
            q[0] = 0;
        else
            q[0] = ch-'0';
        for(int i = 1; i < 9; i++)
        {
            cin >> ch;
            if(ch == 'x')
                q[i] = 0;
            else
                q[i] = ch-'0';
        }
        int ans = cantor(q);
       // printf("%d\n",ans);
        if(!vis[ans])
            printf("unsolvable\n");
        else
        {
            cout <<path[ans]<<endl;
        }
    }
    return 0;
}


②双向bfs + 康拓展开+奇偶剪枝

剪枝:当x左右移动时,序列不变;上下移动时,移动2位后逆序数+2,所以奇偶性不变

双向bfs:因为扩展越大,你要搜索的部分就更多.而同时从开头和结果开始理论上来说会快很多

#include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <algorithm>
#include <cmath>
#include <queue>
#include <map>
#include <vector>
typedef long long ll;
using namespace std;

const int MAXN=370000;
int fac[]= {1,1,2,6,24,120,720,5040,40320,362880}; //康拖展开判重
//         0!1!2!3! 4! 5!  6!  7!   8!    9!
int  vis[MAXN];//标记
int  vis2[MAXN];
int cantor(string s)//康拖展开求该序列的hash值
{
    int sum=0;
    for(int i=0; i<9; i++)
    {
        int num=0;
        for(int j=i+1; j<9; j++)
            if(s[j]<s[i])num++;
        sum+=(num*fac[9-i-1]);
    }
    return sum+1;
}

struct node
{
    string path;
    int state;
} From;

struct node2
{
    int num;
    char ch;
} pre[MAXN];

char dire2[5] = "dlur";
char dire1[5] = "urdl";
int dir[4] = {-3,1,3,-1};

void pri(int t)
{
    if(pre[t].num == -1)
        return ;
    pri(pre[t].num);
    printf("%c",pre[t].ch);
}

void bfs(node cur)
{
    queue<node>que1;
    queue<node>que2;
    memset(vis,0,sizeof(vis));
    memset(vis2,0,sizeof(vis2));

    pre[0].num = pre[1].num  = pre[2].num = -1;
    node last,tp;
    vis[cantor(cur.path)] = 1;
    last.path ="123456780";
    last.state = 8;
    vis2[cantor(last.path)] = 2;
    que1.push(From);
    que2.push(last);
    int num = 2;

    while(!que1.empty() && !que2.empty())
    {
        //正向搜索
        cur = que1.front();
        que1.pop();
        int stat = cantor(cur.path);
        if(vis2[stat])
        {
            pri(vis[stat]);
            int k = vis2[stat];
            while(pre[k].num != -1)
            {
                printf("%c",pre[k].ch);
                k = pre[k].num;
            }
            printf("\n");
            return;
        }
        for(int i = 0; i < 4; i++)
        {
            if(i==0&&cur.state<3)continue;             //up
            if(i==1&&cur.state%3 == 2)continue;       //right
            if(i==2&&cur.state>5)continue;            //down
            if(i==3&&cur.state%3 == 0)continue;       //left
            int posi = cur.state + dir[i];
            tp = cur;
            swap(tp.path[cur.state],tp.path[posi]);
            int x = cantor(tp.path);
            if(vis[x])
                continue;
            vis[x] = ++num;

            tp.state = posi;
            pre[num].ch = dire1[i];
            pre[num].num = vis[stat];
            que1.push(tp);
        }

        //反向搜索
        last = que2.front();
        que2.pop();
        stat = cantor(last.path);
        if(vis[stat])
        {
            pri(vis[stat]);
            int k =vis2[stat];
            while(pre[k].num!=-1)
            {
                printf("%c",pre[k].ch);
                k=pre[k].num;
            }
            printf("\n");
            return ;
        }
        for(int i = 0; i < 4; i++)
        {
            if(i==0&&last.state<3)continue;
            if(i==1&&last.state%3==2)continue;
            if(i==2&&last.state>5)continue;
            if(i==3&&last.state%3==0)continue;
            int posi = last.state + dir[i];
            tp = last;
            swap(tp.path[last.state],tp.path[posi]);
            int x = cantor(tp.path);
            if(vis2[x])
                continue;
            vis2[x] = ++num;

            tp.state = posi;
            pre[num].ch = dire2[i];
            pre[num].num = vis2[stat];
            que2.push(tp);
        }
    }
    printf("unsolvable\n");
}

bool check(string a)
{
    int num = 0;
    for(int i = 0; i < 9; i++)
    {
        if(a[i] == '0' )
            continue;
        for(int j = i+1; j < 9; j++)
        {
            if(a[j] == '0') continue;
            if(a[j] < a[i])
                num++;
        }
    }
    if(num & 1)
        return true;
    else
        return false;
}

char ch;
char a[100];
int p[10];
int main()
{
    while(gets(a))
    {
        int tnum = 0;
        int n=strlen(a);
        From.path="";
        for(int i=0; i<n; i++)
            if(a[i]!=' ')
            {
                if(a[i]=='x')
                {
                    From.state=tnum;
                    From.path+='0';
                }
                else
                    From.path+=a[i];
                tnum++;
            }
        if(check(From.path))printf("unsolvable\n");
        else
              bfs(From);
    }
    return 0;
}


③A*算法+康拓展开+奇偶剪枝

它把Dijkstra算法(靠近初始点的结点)和BFS算法(靠近目标点的结点)的信息块结合起来。走到终点的代价为f[n],主要由已经花费的代价g[n]和将要花费的代价h[n]决定,f[n] = g[n] + h[n],由于要找最短的路径,优先判定f[n]较小的。

而在本题中g[n]即是已经走过的步数,h[n]则是当前情况移动到->  123456780的最小步数.


#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <algorithm>
typedef long long ll;
using namespace std;

const int MAXN=362880;
int fac[]= {1,1,2,6,24,120,720,5040,40320,362880};
//         0!1!2!3! 4! 5!  6!  7!   8!    9!
int vis[MAXN];
int cantor(int s[])
{
    int sum=0;
    for(int i=0; i<9; i++)
    {
        int num=0;
        for(int j=0; j<i; j++)
            if(s[j]>s[i])num++;
        sum+=(num*fac[i]);
    }
    return sum;
}

struct node2
{
    int pre;
    char ch;
} pre[MAXN];

struct node
{
    int matri[10];
    int position;
    int have,to;
    int state;
    bool operator < (const node a)const
    {
        return have+to>a.have+a.to;
    }
};

char dire[5] = "urdl";
int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}};

int fx[]={2,0,0,0,1,1,1,2,2},fy[]={2,0,1,2,0,1,2,0,1};
int get_(node a)
{
    int ans = 0;
    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 3; j++){
            if(a.matri[i*3+j]){
                ans+=abs(i-fx[a.matri[i*3+j]])+abs(j-fy[a.matri[i*3+j]]);
            }
        }
    return ans;
}
int fina[10];

void pri(int k)
{
    if(pre[k].pre == -1) return;
    pri(pre[k].pre);
    printf("%c",pre[k].ch);
}

void bfs(node cur)
{
    priority_queue<node>que;
    memset(vis,0,sizeof(vis));
    vis[cur.state] = 1;
    int tnum = 1;
    pre[1].pre = -1;
    for(int i = 0; i < 8; i++)
        fina[i] = i+1;
    fina[8] = 0;
    int _ans = cantor(fina);
    cur.have = 0;
    que.push(cur);
    while(!que.empty())
    {
        cur = que.top();
        que.pop();
        int x = cur.position/3;
        int y = cur.position%3;
        int num = cur.state;
        if(num == _ans)
        {
            int k = vis[num];
            pri(k);
            printf("\n");
            return ;
        }
        for(int i = 0; i < 4; i++)
        {
            int tx = x + dir[i][0];
            int ty = y + dir[i][1];
            if(tx < 0 || tx > 2 || ty < 0 || ty > 2)
                continue;
            node t = cur;

            t.position =tx*3+ty;
            t.matri[cur.position] = t.matri[t.position];
            t.matri[t.position] = 0;
            t.have++;
            t.to = get_(t);
            t.state =cantor(t.matri);
            if(!vis[t.state])
            {
                vis[t.state] = ++tnum;
                pre[tnum].pre = vis[num];
                pre[tnum].ch = dire[i];
                que.push(t);
            }
        }
    }
    printf("unsolvable\n");
}

bool check(int a[])
{
    int num = 0;
    for(int i = 0; i < 9; i++)
    {
        if(a[i] == 0 )
            continue;
        for(int j = i+1; j < 9; j++)
        {
            if(a[j] == 0) continue;
            if(a[j] < a[i])
                num++;
        }
    }
    if(num & 1)
        return true;
    else
        return false;
}

char ch;
int main()
{
    while(cin >> ch)
    {
        node from;
        if(ch == 'x')
        {
            from.matri[0] = 0;
            from.position = 0;
        }
        else
            from.matri[0] = ch-'0';
        for(int i = 1; i < 9; i++)
        {
            cin >> ch;
            if(ch == 'x')
            {
                from.matri[i] = 0;
                from.position = i;
            }
            else
                from.matri[i] = ch-'0';
        }
        int ans = cantor(from.matri);
        from.state = ans;
        // printf("%d\n",ans);
        if(check(from.matri))
            printf("unsolvable\n");
        else
            bfs(from);
    }
    return 0;
}



基于STM32L4XX、HAL库的MCP4561数字电位器驱动程序设计 / HAL库需要左移一位。* @param address: 设备地址(0x2C-0x2F)* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hmcp: MCP4561句柄。* @param hi2c: I2C句柄。 阅读详情

相关推荐

[USACO2023-JAN-Bronze] T2 Air Cownditioning II 题解

[USACO2023-JAN-Bronze] T2 Air Cownditioning II题解

1651

搜索专题训练hdu1043Eight

The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed

Qer的博客 495

通达信源码-主力建仓-AI投研图灵室出品

AI投研图灵室1:=3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)-2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);AI投研图灵室2W:=100-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));AI投研图灵室3:=SMA(SMA(AI投研图灵室2,3,1),3,1);

qq_57222058的博客 4379

Eight hdu 1043 八数码问题 双搜

Eight Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11226Accepted Submission(s): 3013Special Judge Problem Description The 15-puzzle h...

weixin_33676492的博客 376

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1688

SwissADME:一款在线预测小分子药动学性质的工具

是一个免费的在线工具,由瑞士生物信息学研究所(SIB)开发,用于预测和分析小分子的药物相似性、理化性质、药代动力学特性以及合成可行性等。它是药物设计和开发中常用的工具之一,帮助研究人员快速评估化合物的成药潜力。

药研猿的博客 5017

50道hdu基础搜索总结

Dfs: 大部分是直接递归枚举,即求满足约束条件下的解,虽不用剪枝,但也需要代码能力。 练习递归枚举的题目: 1241 Oil Deposits (dfs的连通块个数) 1016 Prime Ring Problem 1584 蜘蛛牌(简单dfs,简单的剪枝,还有人用DP做(???)) 1426 Sudoku Killer(练习...

weixin_30375427的博客 361

dbt+Snowflake实战:数据建模、权限隔离与性能优化全指南

dbt(data build tool)作为现代数据栈的核心建模工具,其与Snowflake的深度协同远不止于SQL编译执行——它本质是将软件工程实践(如版本控制、测试驱动、CI/CD)注入数据交付流程。理解dbt的声明式建模原理与Snowflake的虚拟仓库、Time Travel、TRANSIENT表、聚簇键等底层机制如何咬合,是实现可维护、可审计、低成本数据产品交付的关键。本文聚焦dbt在Snowflake环境中的真实落地挑战,涵盖schema与warehouse的物理映射设计、role级硬隔离策略、

weixin_34389926的博客 312

Eight (HDU - 1043,反向 BFS + 康拓展开)

一.题目链接: HDU-1043 二.题目大意: 八数码经典问题. 不懂的去玩 4399 三.分析: 挂上几个大佬的链接: 八数码解的存在性证明 康拓展开 直接 BFS TLE 了. 这里 反向 BFS 很妙,只搜索一次,把所有状态都记录下来. 四.代码实现: #include <set> #include <map> #include <c...

The___Flash的博客 357

uniapp - 最新实现APP连接使用MQTT流程及源码教程,uniapp app端接入mqtt发布订阅和接收消息队列传送消息、断开重连等各种示例代码(完美兼容安卓Android与苹果ios手机)

uniapp app端接入mqtt示例代码教程,uni-app中使用mqtt,uniapp安卓app接入mqtt,uniApp苹果ios集成MQTT教程,uniapp vue3 mqtt app端的接入流程,uniapp开发安卓和ios如何在项目里集成mqtt,Mqtt协议,uniapp开发APP,主动连接mqtt,订阅消息,实现发布,订阅和接收消息,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,搭建MQTT通讯做聊天项目,uniapp与设备通信 通过mqtt实现

🏆 前端领域优质创作者 6570

停车位检测:基于YOLOv5与UI界面的实现

YOLOv5是YOLO(You Only Look Once)系列中的最新版本,它能够在单次前向传播中同时完成多个目标的定位与分类,因此被广泛应用于实时目标检测任务。与之前的版本相比,YOLOv5在精度和速度上得到了很大的优化,适合嵌入到实际的自动驾驶和智能交通系统中。YOLOv5使用了卷积神经网络(CNN)进行特征提取,并通过回归方法预测边界框、类别及置信度。高效的推理速度:YOLOv5采用了优化的模型结构,能够在保证精度的同时提供较快的推理速度。较高的精度。

YOLO 694

(中等) HDU 1043 Eight,经典搜索问题。

  Problem Description   The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to...

weixin_30484739的博客 77

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1218

hdu 1043 八数码 经典搜索问题 BFS+MAP

Eight Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8747    Accepted Submission(s): 2387 Special Judge Problem Description The 15-puz

hnust_xiehonghao的专栏 2192

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WINCC7.3破解文件

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

HDU 1043 八数码(经典搜索Astar+康托展开)

EightTime Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28030    Accepted Submission(s): 7456Special JudgeProblem DescriptionThe 15-puzzle has bee...

qq_25156657的博客 295

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

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

hdu 1043/poj 1077 Eight (八数码 经典搜索题 bfs + 康托展开)

听说不做此题人生不完整,吓得我赶紧做了。

巴达鸟巴达鸟 1187

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ-1077 HDU 1043 HDU 3567 Eight (BFS预处理+康拓展开)

思路: 这三个题是一个比一个令人纠结呀。 POJ-1077 爆搜可以过,94ms,注意不能用map就是了。 #include<iostream> #include<stack> #include<queue> #include<map> #include<cstring> using namespace std; ...

weixin_30294709的博客 90

HDU 1043 八数码问题 BFS + 康拓 (经典搜索题)

附上题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 我用了3种方法AC。第一种是双向广搜 + 逆序对奇偶剪枝 + 康拓展开 。 第二种方法是打表法,先用bfs搜素出所有路径,保存。当然还有康拓展开。第二种速度快多了。 第三种方法 A*算法 。关于A*算法大家可以参考大神的博客。 第一种 用时 1880MS 代码如下: #in...

weixin_30443075的博客 169

HDU - 1043 - Eight(经典八数码&&各种搜索) (未完)

关于逆序数判别是否有解 单向BFS #include &lt;bits/stdc++.h&gt; using namespace std; typedef pair&lt;int,char&gt; pic; struct Node { int s[9];//当前排列 int ri,ci;//x的位置 int status;//状态的康拓映射 int cnt...

刘二狗的博客 374

HDU---1043 POJ 1077 Eight 八数码问题 广度优先搜索 康拓展开

问题:很经典的搜索,给定一个3*3的方格,里面放1-8个数字,有一个空格,空位可以与相邻的数字可以移到空格中,问给定一个状态,怎么移动到一个特定的状态(比如1-8顺序存放)。 康拓展开记录当前的状态,BFS即可。 HDU 1043是让给定多组状态,怎么还原成1-8顺序存放,可以倒叙BFS,打标出所有状态, POJ 1077是一组数据,直接正向搜索即可。 思考:A*怎么解决这道题...

sgh666666的博客 248

HDU-1043 Eight(经典八数码问题, A*+康拓+曼哈顿距离+逆序数判断可解性、双向搜索)

八数码经典问题 The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed into a 4 by 4 frame with one tile missing. Let'

yo_bc的博客 671

精选优快云的ACM-ICPC博文

北大ACM试题分类 - 实时更新我所有的解题报告链接 - ζёСяêτ - 小優YoU - 博客频道 - youkuaiyun.com POJ水题大集合_星星流浪的城市_新浪博客 POJ题目分类 - FreeCoder的专栏 - 博客频道 - youkuaiyun.com POJ各题算法分类和题目推荐 - 路雪军 Carl - 博客频道 - youkuaiyun.com POJ推荐50题 - 路雪...

weixin_34348174的博客 117

HDU1041——Computer Transformation,HDU1042——N!,HDU1043——Eight

在每个连续的时间步,计算机同时将每个数字 0 转换为序列 1 0,将每个数字 1 转换为序列 0 1。要找出经过 n 步后,序列中会出现多少对连续的 0?它使用的是逆序对的数量(相对于最终位置错乱的方块)乘以距离末尾位置的距离的阶乘。: 实际上,我们可以观察到连续0对的数量遵循一个模式,可以通过递推关系直接计算,而不需要实际生成序列。这是因为每次迭代,上一步的所有连续0对都将被保留,同时新的0对将在上上步的基础上产生(因为替换。输出:对于每个输入的 n,打印经过 n 步后序列中出现的连续 0 对的数量。

u014114223的博客 1368

[算法入门经典] 7.5.3 八数码问题 | HDU 1043

这个游戏小时候玩过,在书上看到

Freeway的博客 1272

HDU 1043 八数码问题【双向BFS】

HDU 1043 八数码问题【双向BFS】 题目链接 题意:给你一个初始状态,问你能否移动到最终的完成状态,如果能输出任意一组解,否则输出unsolved。 思路:乍一看是个BFS,但是状态过多会TLE或者MLE,但是除可BFS确实没得写了,这时候就要用到双向BFS了,起点终点同时BFS,判断相遇,路径用string+就行了。 注意点:正向路径s=s+c,逆向s=c+s;输出也要注意先输出正向; ...

qq_43653111的博客 262
上一篇: 例10-12 *uva1637(概率dp)
下一篇: 例 7-10 uva12212(迭代加深搜索)
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值