玩转VS code 之 C/C++ 环境配置篇

news2024/10/5 19:17:09

PS:俺是菜鸟,整理和踩坑试错花了不少时间,如果这篇文章对您有用的话,请麻烦您留下免费的赞赞,赠人玫瑰,手留余香,码字踩坑不易,望三连支持

上一篇:玩转 VS code 之下载篇

Msys2

MinGW也可以,但我用的是msys2

下载Msys2

地址:MSYS2

 

 安装Msy2

 无脑同意直到结束

 

 完成mingw工具链安装

打开页面

 输入命令,更新(安装文件是最新的可以直接下一步)

pacman -Syu

更新完毕以后会强制关闭终端,从开始菜单运行“MSYS2 MSYS”

使用以下命令更新其余基本软件包

pacman -Syu

 输入以下命令完成mingw工具链安装

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

 检查编译器配置是否成功

编译器安装完成后,win+R在cmd窗口输入依次下面俩条命令,检查编译器配置是否成功

gcc -v

gdb -v

C/C++ 环境配置 

因为配置了C++环境,C语言也能直接用,我就直接配置C++的了

小白版

经我几经踩坑测试删减而成,亲测可用(一把辛酸泪)

后面还有进阶版,要改的一样,但是多了很多参数和注释,有兴趣滴大佬可以看一下

改几处即可快速上手使用使用,要改的已经标出,根据自己安装路径进行更改

 先建一个叫做.vscode的文件夹(放配置文件滴,源代码不要放进去,放进去会咋样我也不道啊)

然后在里面建4个一样名字的json文件,把我的代码放进去,然后,修改几处标出的地方就可以了

launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "弹窗输出",
            "type": "cppdbg",
            "request": "launch",
            "program": "C:\\windows\\System32\\cmd.exe",
            "args": [
                "/C",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "&",
                "pause"
            ],
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //改成自己的路径的gdb.exe
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "mytask"
        },
        {
            "name": "终端输出",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //改成自己的路径的gdb.exe
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "myrun"
        }
    ]
}
tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "mytask",
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径
            "args": [
                "-fexec-charset=gbk",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
            ],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "弹窗输出"
        },
        {
            "type": "shell",
            "label": "myrun",
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {},
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "终端内输出"
        },
        {
            "type": "cppbuild",
            "label": "run",
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {},
            "problemMatcher": [
                "$gcc"
            ],
            "group": "test",
            "detail": "终端内输出"
        }
    ]
}
c_cpp_properties.json
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "${default}"
        }
    ],
    "version": 4
}
settings.json

这个不太重要,好像没有都能跑代码

{
    "files.associations": { //配置语言的文件关联,优先级高于已安装语言的默认关联。
        "ostream": "cpp"
    },
    "workbench.editor.autoLockGroups": {
        "workbench.input.interactive": true //交互窗口
    },
    "files.autoGuessEncoding": true, //编辑器将尝试在打开文件时猜测字符集编码。还可以按语言配置此设置.
    "files.encoding": "gbk" //在读取和写入文件时使用的默认字符集编码。
}

注意

系统弹出的小黑窗是gbk编码(chcp 936) 用chcp 可以查看 编码格式

用 chcp + 对应编码代码可以暂时更改编码格式,chcp 936即可改为gbk格式

而vscode的默认编码是utf-8,它的终端也是 (chcp 65001)

编码格式不同,有时使用中文会乱码

文件乱码,我们可以选择正确的编码格式重新打开,就正常了

但是输出乱码就麻烦了,经过踩坑,我的代码可以避免大部分的乱码

我设置了三个输出方式,俩个是终端内输出,一个是弹出窗输出,推荐弹出框(基本没问题)

 可以右上角启动,也可以左上角启动,推荐左边的(有下拉框)

 也可以F5快捷键调试

使用终端输出的时候,输出别有弹窗,不然,弹窗里的字是乱码的,但是终端立的正常

举个栗子

 

 这时该咋整呢?

都有弹窗了,那肯定用弹窗输出呗

所以首推弹窗式,但是正常都能用

(如果这都不行的话,那我也没办法,菜鸟水平就到这里了,别的我也不会昂) 

大师版

小白进阶版,要改的一样,但是多了很多东西,只有俩个大改,还有俩个一样的,从上面拿呗

核心内容大同小异(小白版是这里精炼下来滴),胜在注释多,可选参数多

launch.json
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    // launch.json指导了运行和调试。
    // 用调试器gdb我们就可以逐步运行我们的程序并且监视运行的情况,从而找出bug。
    {
        "version": "0.2.0",
        "configurations": [
            //配置列表。使用 IntelliSense 添加新配置或编辑现有配置。
            {
                "name": "弹窗输出", //配置名称;显示在启动配置下拉菜单中。
                "type": "cppdbg", //配置类型。 cppdbg: C++ (GDB/LLDB)
                "request": "launch", //请求配置类型。可以是“启动”或“附加”。
                // 第一种写法,另一个看下面的案例
                "program": "C:\\windows\\System32\\cmd.exe", //打开cmd
                "args": [
                    "/C",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe", //程序可执行文件的完整路径。
                    "&", // 连接多个命令
                    "pause" //避免程序运行完后闪退,相当于c++的system("pause");
                ],
                "stopAtEntry": false, //可选参数。如果为 true,则调试程序应在目标的入口点处停止。如果传递了 processId,则不起任何作用。
                "cwd": "${workspaceFolder}", //目标的工作目录。
                "environment": [ //要添加到程序环境的环境变量
                    //比如: [ { "name": "config", "value": "Debug" } ],而不是 [ { "config": "Debug" } ]。
                ],
                "externalConsole": true, //如果为 true,则为调试对象启动控制台。如果为 false,它在 Linux 和 Windows 上会显示在集成控制台中。
                "MIMode": "gdb", //指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。
                "miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序。
                /*修改成自己bin目录下的gdb.exe,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/
                "setupCommands": [ //为了安装基础调试程序而执行的一个或多个 GDB/LLDB 命令
                    {
                        "description": "为 gdb 启用整齐打印", //此命令的可选说明。
                        "text": "-enable-pretty-printing", //要执行的调试命令。
                        "ignoreFailures": true //此命令的可选说明。
                    }
                ],
                "preLaunchTask": "mytask" //调试会话开始前要运行的任务,是之前在task里的第一个label(自定义名字)
            },
            {
                "name": "终端输出",
                "type": "cppdbg",
                "request": "launch",
                //第二种写法
                "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //程序可执行文件的完整路径。
                "args": [
                    //传递给程序的命令行参数。
                ],
                "stopAtEntry": false, //可选参数。如果为 true,则调试程序应在目标的入口点处停止。如果传递了 processId,则不起任何作用。
                "cwd": "${fileDirname}", //目标的工作目录。
                "environment": [], //要添加到程序环境的环境变量
                "externalConsole": false, //默认false,即不打开小黑窗,直接在vscode终端输出,vscode右上角的就是如此
                // 注意 弹出窗口是系统的,gbk编码,终端的是默认utf-8,中文可能会乱码,嫌麻烦可以直接改true
                "MIMode": "gdb", //指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。
                "miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序。
                /*修改成自己bin目录下的gdb.exe,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/
                "setupCommands": [ //为了安装基础调试程序而执行的一个或多个 GDB/LLDB 命令
                    {
                        "description": "为 gdb 启用整齐打印", //任务说明
                        "text": "-enable-pretty-printing", //要执行的调试命令
                        "ignoreFailures": true //如果为 true,应忽略此命令的失败。默认值为 false。
                    },
                    {
                        "description": "将反汇编风格设置为 Intel", //任务说明
                        "text": "-gdb-set disassembly-flavor intel", //要执行的调试命令
                        "ignoreFailures": true //如果为 true,应忽略此命令的失败。默认值为 false。
                    }
                ],
                // "preLaunchTask": { //调试会话开始前要运行的Grunt任务。
                //     "task": "mytask",//要自定义的Grunt 任务。
                //     "type": "grunt",
                //     "args": [],//要传递给 grunt 任务的命令行参数
                //     "file": ""//提供任务的 Grunt 文件。可以省略。
                // }, 
                "preLaunchTask": "mytask" //调试会话开始前要运行的任务,是之前在task里的第一个label(自定义名字)
            }
        ]
    }
tasks.json
// tasks.json会指导vsc编译、运行你的文件。
// See https://go.microsoft.com/fwlink/?LinkId=733558  // 查看官方文档
// vsc会为你默认生成一个模板,如果你安装了C/C++ Extension,intellisense会为你解释每一行的意义。
// 悬停以查看现有属性的描述。
// ${file}	你窗口正在显示的这个文件
// ${fileDirname}	${file}所在的文件夹
// ${fileBasenameNoExtension}	去掉文件尾名的文件名
// ${workspaceFolder}	就是你最开始打开的文件夹,大写名字的那个
{
    "version": "2.0.0", // 配置的版本号。
    "tasks": [ //任务配置。通常是外部任务运行程序中已定义任务的扩充。
        {
            "type": "shell", //定义任务是被作为进程 process 运行还是在 shell 中作为命令运行。
            "label": "mytask", //取个名字,不过要记得,待会 launch.json 的 preLaunchTask 要用
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //执行编译的编译器或脚本的路径 //g++ 适合于C++。
            "args": [ //方括号里是传给g++的命令行参数
                "-g", //指定输出文件的路径和名称
                "${file}", //指定要编译的是当前文件
                "-o", //指定输出文件的路径和名称
                "${fileDirname}\\${fileBasenameNoExtension}.exe", //承接上一步的-o,让可执行文件输出到源码文件所在的文件夹下的bin文件夹内,并且让它的名字和源码文件相同
                "-std=gnu++17", // 语言标准
                "-fexec-charset=GBK", // 生成的程序使用GBK编码
                "-fdiagnostics-color=always", //用于在编译时启用彩色输出以改善可读性
                // "-I", //头文件(自己写的)
                // "-lfunc", //外部库的名字
                // "-L./", //外部库的路径
                // "-Wall", // 开启额外警告
                // "-static-libgcc", // 静态链接libgcc
                // "F:\\vscode\\my vscode",
            ],
            "presentation": { //配置用于显示任务输出并读取其输入的面板。
                "echo": true, //控制是否将执行的命令显示到面板中。
                "reveal": "always", //控制运行任务的终端是否显示。可按选项 "revealProblems" 进行替代。
                "focus": false, //控制面板是否获取焦点。默认值为“false”。如果设置为“true”,面板也会显示。
                "panel": "new", // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板。
                //new 每个进程创建新窗口
                "showReuseMessage": false, //控制是否显示“终端将被任务重用,按任意键关闭”提示。
                "clear": false //控制是否在执行任务之前清除终端。
            },
            "options": { // 其他命令选项
                "cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。
                "env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。
                // "shell": {} // 配置使用的 shell。
            },
            "problemMatcher": [
                //要使用的问题匹配程序。可以是一个字符串或一个问题匹配程序定义,也可以是一个字符串数组和多个问题匹配程序。
                "$gcc"
            ],
            "group": "build", //  将任务标记为可通过 "运行生成任务" 命令访问的生成任务。
            "detail": "弹窗内输出" // 任务的其他详细信息。
        },
        { // 设置与上面的性质相同,都是构建任务
            "type": "shell",
            "label": "myrun",
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径
            "args": [ //其他参数见上一个
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "presentation": { //配置用于显示任务输出并读取其输入的面板。
                "echo": true, //控制是否将执行的命令显示到面板中。
                "reveal": "always", //控制运行任务的终端是否显示。可按选项 "revealProblems" 进行替代。
                "focus": false, //控制面板是否获取焦点。默认值为“false”。如果设置为“true”,面板也会显示。
                "panel": "new", // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板。
                //new 每个进程创建新窗口
                "showReuseMessage": false, //控制是否显示“终端将被任务重用,按任意键关闭”提示。
                "clear": false //控制是否在执行任务之前清除终端。
            },
            "options": { // 其他命令选项
                "cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。
                "env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。
                // "shell": {} // 配置使用的 shell。
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "终端内输出"
        },
        { //这个大括号里是‘运行(run)’任务,一些设置与上面的构建任务性质相同,此任务是组中的默认任务,vscode右上角三角形运行
            "type": "cppbuild", // 要自定义的任务类型
            "label": "run", //任务名称,点vscode 右上角运行的就是这个
            "command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //执行编译的编译器或脚本的路径。
            "args": [ //其他要传递给编译器或编译脚本的参数
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe", //执行exe文件,只需要指定这个exe文件在哪里就好
            ],
            "options": { // 其他命令选项
                "cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。
                "env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。
                // "shell": {}  // 配置使用的 shell。
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "test", //这一组是‘测试’组,将run任务放在test组里方便我们用快捷键执行
                "isDefault": true // 定义此任务是组中的默认任务,还是与应触发此任务的文件匹配的 glob。
            },
            "detail": "调试器生成的任务。" // 任务的其他详细信息。
        }
    ]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字人如何赋能汽车品牌营销线下实时交互?

为了进一步巩固和拓展消费群体,扩大品牌影响力,别克汽车在线下开展了新品体验日活动,在品鉴会现场数字人影萱作为神秘嘉宾惊喜亮相,与现场嘉宾和众多媒体同屏实时互动,这虚拟与现实的碰撞互动形式,让现场嘉…

复合 类型

字符串和切片 切片 切片的作用是允许你引用集合中部分连续的元素序列,而不是引用整个集合。 例如: let s String::from("hello world");let hello &s[0..5]; // 切片 [0,5) 等效于&s[..5] let world &s[6..11]; // 切片…

Puppeteer vs Selenium的主要区别

Puppeteer vs. Selenium:他们来自哪里? Google Puppeteer是一个 Node.js 库和浏览器测试框架。该技术旨在提供高级应用程序编程接口,以通过 DevTools 协议控制无头 Chrome。Selenium 支持多种浏览器和语言,而 Puppeteer 只专注于 …

Leetcode-每日一题【剑指 Offer 32 - III. 从上到下打印二叉树 III】

题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20…

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法,通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…

设计模式之原型模式详解

前言 在设计模式的系列文章中,我们前面已经写了工厂模式、单列模式、建造者模式,在针对创建型模式中,今天想跟大家分享的是原型模式,我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新…

vite4+vue3+electron23.3+ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包

vite4vue3electron23.3ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包 主要包依赖 "electron-store": "^8.1.0", //全局数据状态管理,可选择性安装"electron": "23.3.8","electron-builder": &q…

驱动控制LED灯

编写驱动代码,初步实现串口输入逻辑控制开发板的LED灯的亮灭 代码示例 head.h #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPD;unsigned int IDR;unsigned int ODR; }gp…

PDManer元数建模

学习文档 PDManer元数建模-v4-操作手册 (yuque.com)https://www.yuque.com/pdmaner/docs/pdmaner-manual#goEFW 建表 -- 创建用户表2 -- 创建用户表2 √ create table USER_TEST_WXX2 ( -- 主键自增generated by default as identity primary keyUSER_ID NUMBER g…

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些? JDKJre java的开发工具(javac.exe java.exe javadoc.exe) jre jvmjava的核心类库 为什…

【Linux】【驱动】应用层和驱动层传输数据

【Linux】【驱动】应用层和驱动层传输数据 绪论1.如果我在应用层使用系统0 对设备节点进行打开,关闭,读写等操作会发生什么呢? 2 我们的应用层和内核层是不能直接进行数据传输的3 驱动部分的代码4 应用代码5 编译以及运行代码 绪论 Linux一切皆文件! 文…

Matplotlib学习挑战第五关--绘制多图subplot() 和 subplots()

Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。 1、subplot subplot(nrows, ncols, in…

2.阿里云对象存储OSS

1.对象存储概述 文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务,需要有存储的支持…

驱动DAY3 控制三盏灯亮灭

1.头文件 #ifndef __HEAD_H__ #define __HEAD_H__ //LED1 PE10 和 LED3 PE8 #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28 //LED2 PF10 #define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#endif 2…

Scractch3.0_Arduino_ESP32_图形化编程学习_Blynk一键配网点灯(七)

IO中断 目的器材程序联系我们 目的 使用自动配网连接Blynk 自动配网 Blynk 器材 硬件: 齐护机器人C02 购买地址 软件: scratch3.0 下载地址:官网下载 程序 程序上传后,在一定时间内联不上网会自动进入智能配网状态,如下图所示。 打开手机搜索名为…

AI芯片暴涨!沙特、阿联酋等国加入抢货行列 | 百能云芯

在全球半导体市场中,一场异常激烈的竞争正在酝酿,引发了各国科技巨头和企业的争相购买英伟达AI芯片的浪潮。除了美国科技大厂之外,包括百度、字节跳动、阿里等中国企业在内,沙特阿拉伯与阿拉伯联合酋长国也纷纷加入了这场角逐&…

【路由协议】使用按需路由协议和数据包注入的即时网络模拟传递率(PDR)、总消耗能量和节点消耗能量以及延迟研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

根据二叉树创建字符串

题目:给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对…

数学建模之“层次分析法”原理和代码详解

一、层次分析法简介 层次分析法(Analytic Hierarchy Process,AHP)是一种用于多准则决策分析和评估问题的定量方法,常用于数学建模中。它是由数学家托马斯赛蒂(Thomas Saaty)开发的。 层次分析法将复杂的决…