linux期末考试题

一、选择题(共30分,每小题2分)

1.以下关于自由软件的说法,正确的是(D

A、自由软件是一种有版权保护的软件 B、修改自由软件应取得原作者的许可

C、微软的 Ofice 软件属于自由软件 D、自由软件不一定都是免费的

解答:

自由软件确实有版权保护(通常基于版权法或类似法律框架),但它通过特定的许可证(如GPL、MIT等)赋予用户特定的自由。因此,自由软件是有版权保护的,但这种保护是为了确保用户享有自由软件的自由,而不是限制用户的使用。

自由软件的核心原则之一是用户可以自由地修改软件,而无需事先取得原作者的许可。只要遵守相应的自由软件许可证条款(如提供修改后的源代码),用户就可以自由地修改和分发软件。

微软的Office软件是专有软件,其源代码不公开,用户没有自由使用、修改和分发的权利。

自由软件的“自由”指的是用户享有运行、复制、分发、学习、修改和改进软件的自由,而不是指软件的价格。自由软件可以免费获取,也可以收费(例如,某些公司可能提供自由软件的技术支持或附加服务并收费)。关键在于用户是否享有上述自由,而不是软件是否免费。

2.使用下列哪个命令可以将目录下所有文件和子目录全都显示出来(D)

A、ls -l B、dir -all C、ls -a D、ls -R

解答:

ls -l 用于以长格式(详细信息)列出当前目录下的文件和子目录,但它不会递归显示子目录中的内容。

dir 是一个在某些系统(如Windows的CMD)中使用的命令,用于列出目录内容。在Unix/Linux系统中,dir 通常是 ls 的别名,但 -all 不是 dirls 的有效选项。因此,这个选项在Unix/Linux系统中不适用。

ls -a 用于列出当前目录下的所有文件和子目录,包括隐藏文件(以点开头的文件)。然而,它不会递归显示子目录中的内容。

ls -R 用于递归列出当前目录及其所有子目录中的文件和子目录。

3.下面哪个命令可以在文件中查找内容(C)。

A、pause B、cat C、grep D、 more

解答:

pause 不是Unix/Linux系统中的标准命令。在某些环境(如Windows批处理脚本)中,pause 用于暂停脚本执行并等待用户按键,但它与文件内容查找无关。

cat 命令用于显示文件的全部内容,但它不具备搜索功能。

grep 是一个强大的文本搜索工具,专门用于在文件中查找匹配特定模式(字符串或正则表达式)的行。

ore 是一个分页查看文件内容的命令,用户可以逐页浏览文件内容,但它本身不提供搜索功能。

4.以下哪个环境变量表示命令的搜索路径(A)。

A、PATH B、PWD C、HOME D、PSI

解答:

PATH 是一个环境变量,用于定义系统在哪些目录中查找可执行命令。当用户在终端输入一个命令时,系统会按照 PATH 中列出的目录顺序依次查找该命令的可执行文件。echo $PATH 会输出当前系统的命令搜索路径。

PWD(Print Working Directory)是一个环境变量,表示当前工作目录的绝对路径。它与命令的搜索路径无关。

HOME 是一个环境变量,表示当前用户的主目录路径。它通常用于存储用户的个人文件和配置,与命令的搜索路径无关。

PSI 不是一个常见的环境变量,也不是用于定义命令搜索路径的变量。在某些上下文中,PSI 可能有其他含义(如进程状态接口),但与本题无关。

5.默认情况下管理员创建了一个用户,就会在(B)目录下创建一个用户主目录。

A、/usr B、/ home C、/root D、/boot

解答:

/usr 目录通常用于存储系统软件和程序资源,例如可执行文件、库文件和文档等。

/home 是Linux系统中用户主目录的标准存储位置。默认情况下,当管理员创建一个新用户时,系统会在 /home 目录下为该用户创建一个以用户名命名的子目录作为其主目录。

/root 是系统管理员(root用户)的专属主目录。

/etc 目录用于存储系统的配置文件,例如用户账户信息、网络配置、服务配置等。

6.vi中哪条命令可以用来保存文件(A)。

A、:w B、:save C、:q D、:r

解答:

:wvi 编辑器中的命令,用于将当前缓冲区的内容写入(保存)到文件中。如果文件已存在,则覆盖原文件;如果文件不存在,则创建新文件。

:save 不是 vi 的标准命令。vi 中没有直接名为 :save 的命令用于保存文件。

:qvi 编辑器中的命令,用于退出编辑器。但如果文件未保存,直接使用 :q 会导致错误(除非使用 :q! 强制退出)。

:rvi 编辑器中的命令,用于读取文件内容并将其插入到当前光标位置。

7.Linux中,用户的密码保存在以下哪个文件里(C)。

A、/etc/sudoers B、/etc/ passwd C、/etc/shadow D、/etc/inittab

解答:

/etc/sudoers 文件用于配置 sudo 命令的权限,定义哪些用户或用户组可以以其他用户(通常是 root)的身份执行命令。

/etc/passwd 文件是Linux系统中用于存储用户账户信息的文件,包括用户名、用户ID、组ID、家目录、登录Shell等。然而,出于安全考虑,现代Linux系统通常不在此文件中存储加密后的用户密码,而是使用一个占位符(如 x*)代替。

/etc/shadow 文件是Linux系统中专门用于存储加密后的用户密码的文件。它只能由 root 用户读取,包含了用户的加密密码、密码最后修改时间、密码有效期等信息。

/etc/inittab 文件(在较新的系统中可能已被 systemd 取代)用于配置系统的初始化过程,定义系统运行级别、启动脚本等。

8.Linux 中显示文件的类型的命令是(C)。

A、whereis B、list C、file D、cat

解答:

whereis 用于查找二进制文件、源文件和手册页的位置。

ls 用于列出目录内容,但不显示文件类型(除非结合 -F-l 等选项查看部分类型信息,但不直接显示文件类型描述)。

file 是Linux中的一个命令,用于确定文件的类型。它会读取文件的内容并尝试识别文件的格式(如文本文件、二进制文件、可执行文件、图片文件等),并输出相应的描述。

cat 命令用于显示文件的全部内容,但它不提供文件类型的信息。它只是将文件内容输出到终端。

9.dirl是一个目录,当执行"rm -rf dirl"命令时,Linux系统会(B)。

A.经过用户确认后再删除 dirl B.直接删除 dirl及 dirl下的所有文件

C.只删除 dirl 下的文件,保留目录 dirl D.只有当 dirl 非空时才能删除

解答:

rm 是用于删除文件或目录的命令。

-r(或 -R)选项表示递归删除,即删除目录及其所有内容(包括子目录和文件)。

-f 选项表示强制删除,即不提示用户确认,直接删除文件或目录(即使文件是只读的或用户没有写权限,也会尝试删除,除非遇到权限完全拒绝的情况)。

10.执行"cp -s"命令可以(D)。

A.拷贝文件 B.拷贝目录 C.创建一个文件的硬链接 D.创建一个文件的符号链接

解答:

cp 是用于复制文件或目录的命令。

-s选项在cp命令中用于创建符号链接(也称为软链接),而不是复制文件内容。

符号链接是一个指向另一个文件或目录的特殊文件,类似于Windows中的快捷方式。如果源文件被删除或移动,符号链接将失效(成为“悬空链接”)。

cp 命令的基本功能是拷贝文件,但 -s 选项改变了默认行为,不进行实际拷贝,而是创建符号链接。

cp 命令可以使用 -r-R 选项递归拷贝目录。

硬链接是通过 ln 命令(不带 -s 选项)创建的,硬链接是文件的另一个名称,与原文件共享相同的inode和数据块。

11.以下哪个命令可以对文件重命名(C)。

A、chown B、chname C、mv D、chmod

解答:

hown 命令用于更改文件或目录的所有者(即用户或用户组)。它的基本语法是 chown [选项] 新所有者 文件

chname 不是Linux中的标准命令。在常见的Linux发行版中,没有这个命令用于文件重命名。

mv 命令用于移动文件或目录,同时也可以用于重命名文件或目录。它的基本语法是 mv [选项] 源文件或目录 目标文件或目录。如果目标路径与源路径在同一目录下但名称不同,则相当于重命名。

chmod 命令用于更改文件或目录的权限(即读、写、执行权限)。它的基本语法是 chmod [选项] 权限 文件

12.使用gcc命令编译C语言程序,需要输出的可执行程序带调试信息,应该(B)

A、gcc -o B、gcc -g C、gcc -E D、gcc -c

解答:

-o 选项用于指定输出文件的名称。例如,gcc -o myprogram source.c 会将编译后的可执行文件命名为 myprogram。但 -o 本身并不添加调试信息。

-g 选项用于在编译时生成调试信息。这些调试信息(如符号表、行号信息等)会被嵌入到可执行文件中,供调试器(如 gdb)使用。

gcc -E 用于仅对源文件进行预处理,并将预处理结果输出到标准输出(或通过重定向保存到文件)。它不生成可执行程序,也不添加调试信息。

-c 选项用于仅编译源文件,生成目标文件(.o 文件),而不进行链接。它不生成最终的可执行程序,也不添加调试信息到可执行程序(因为根本没有生成可执行程序)。

13.文件的 inode 中不包含以下哪些内容(A)。

A、文件名称 B、文件的访问权限 C、文件的链接数 D、文件数据 block 的位置

解答:

inode(索引节点)是Linux文件系统中用于存储文件元数据的数据结构。

inode中包含的信息通常包括:

  • 文件的类型(如普通文件、目录、符号链接等)。
  • 文件的访问权限(如读、写、执行权限)。
  • 文件的硬链接数(即指向该inode的目录项数量)。
  • 文件所有者的用户ID和组ID。
  • 文件的大小(以字节为单位)。
  • 文件数据块的指针(即文件数据在磁盘上的存储位置)。
  • 文件的创建时间、修改时间、访问时间等时间戳。

inode中不包含的信息是文件名。文件名存储在目录项中,目录项将文件名映射到对应的inode号。

14.为了达到使文件的属主和同组用户有读(r)、写(w)和执行(x)的权限,而其他用户有读(r)执行权限(x),在设置文件的许可值时,应当设为(C)。

A、665 B、774 C、775 D、654

解答:

读(r):4 写(w):2 执行(x):1

属主权限:4+2+1=7

同组用户权限:4+2+1=7

其他用户权限:4+1=5

故而设置许可值时,应当设为775

15.shell编程时,表达式[ $a = $b ]的含意是(B)

A、将变量b的值赋给变量a B、测试字符串a和字符串b是否相等

C、测试整数a和整数b是否相等 D、将变量b的值赋给变量a并返回b的值

解答:

=[ ] 中用于字符串比较(不是赋值)。

如果变量 $a$b 的字符串值相同,则表达式返回真(退出状态为0),否则返回假(非0)。

=[ ] 中不是赋值操作,赋值在shell中用 = 直接完成(如 a=$b

测试整数是否相等应使用 -eq(如 [ $a -eq $b ]

[ ] 是条件测试,不会赋值或返回值。

二、简答题(共40 分,每小题10分)

1、什么是 Linux 的管道功能和输入/输出重定向功能?举例说明如何使用该功能。

答:Linux的管道功能(|)用于将一个命令的输出作为另一个命令的输入,实现命令间的数据传递;输入/输出重定向则通过符号(如 >>><)将命令的输入/输出从默认设备(如键盘/屏幕)重定向到文件或其他设备。例如:

  • 管道:ls -l | grep ".txt"ls -l 的输出通过管道传递给 grep,仅显示包含 .txt 的文件。
  • 输出重定向:echo "Hello" > file.txtecho 的输出重定向到 file.txt(覆盖原内容),>> 则追加内容。
  • 输入重定向:grep "word" < file.txtfile.txt 读取输入并搜索 "word"

2.请列出Linux操作系统的主要目录,并说明该目录的功能是什么。(注:请至少列出10个要目录)

答:

以下是Linux操作系统中至少10个主要目录及其功能的说明:

  1. /(根目录)

    整个文件系统的起点,所有其他目录和文件都位于根目录下或其子目录中,是Linux文件系统的最高层级。
  2. /bin

    存放系统启动和日常操作所必需的基本命令,如lscpmvcat等,这些命令无需额外权限即可使用。
  3. /sbin

    存放关键的命令,这些指令大多专为root用户设计,比如分区工具、ifconfig(网络配置工具)和shutdown(关机命令)等。
  4. /etc

    存放系统的配置文件,几乎所有的系统服务设置文件都被放置在这个目录中,涵盖了从用户账户设置(如/etc/passwd)到网络设置(如/etc/network),以及系统启动相关设置(如/etc/hostname)等多个方面。
  5. /dev

    存放设备文件,这些文件并非用于存储数据,而是充当操作系统与各类硬件设备沟通的桥梁,通过这些设备文件来实现对硬件如硬盘、键盘、鼠标、光驱等的识别与操作。
  6. /proc

    一个虚拟文件系统,实时反映了系统运行时的状态信息,用户可以通过这个目录下的文件来获取进程、内存、CPU以及硬件状态等数据。
  7. /var

    存放系统中经常变动的文件,如系统日志、缓存、邮件和打印队列等。由于这些文件会不断增多,管理员需要定期对其进行维护和清理。
  8. /tmp

    用于存储临时文件,无论是程序运行时产生的临时文件,还是用户操作生成的临时数据,都会存放在这里,该目录下的文件通常有效期限较短。
  9. /usr

    用于存放通用文件和用户应用程序的区域,其中包含了众多应用程序、库文件及文档等。
  10. /home

    存放所有普通用户个人资料的根目录,每个用户都有一个以其用户名命名的专属子目录,这里保存了他们的个人文件、设置和文档。用户可以独立管理自己的主目录内容,而系统管理员则有权限访问和管理所有用户的主目录。

3.什么是内存泄漏?内存泄漏对系统有什么影响?在编程时如何避免内存泄漏。

答:内存泄漏是指程序在动态分配内存后未正确释放不再使用的内存,导致这部分内存被永久占用,无法被系统回收利用;

其对系统的影响包括逐渐耗尽可用内存、引发程序或系统性能下降(如卡顿、响应变慢),甚至导致系统崩溃(尤其在长期运行的进程或内存资源受限的环境中);

编程时避免内存泄漏的方法包括:及时释放不再使用的内存、采用自动内存管理的语言(如Java/Python的垃圾回收机制)、利用工具检测泄漏,并养成良好编程习惯避免循环中重复分配未释放的内存。

4.系统管理员每天需完成以下的重复工作,请按照下列要求,用crontab命令编制完成这些工作:

(1)每小时(整点)在屏幕上显示当前时间;

0 * * * * echo "当前时间: $(date)"

(2)每天早上6:00定时打开网络设备(eth0);

0 6 * * * ifconfig eth0 up

(3)每天晚上23:00定时关闭网络设备(eth0);

0 23 * * * ifconfig eth0 down

(4)周一至周五每2小时进行一次备份 pub 文件数据到 data 文件中;

0 */2 * * 1-5 cp /opt/pub /opt/data

(5)每周五下午18:00 删除临时文件(/temp 目录中的文件)。

0 18 * * 5 rm -rf /temp/*

三、综合编程题(共 30分,每小题15分)

1.编写shell脚本,能够循环录入学生的百分制成绩,将其转换为对应的成绩等级显示。

优:90-100 良:80-89 中:70-79 及格:60-69 不及格0-59

录入完毕时按q或Q键,显示已经录入的各个等级成绩的人数,然后退出程序。

解:

#!/bin/bash

# 初始化计数器
excellent=0
good=0
medium=0
pass=0
fail=0 # 循环录入成绩
#使用read命令提示用户输入成绩,并将输入存储在变量score中
while true; do
read -p "请输入学生的百分制成绩(输入q或Q退出): " score # 检查是否退出
if [[ "$score" =~ ^[qQ]$ ]]; then
break
fi # 检查输入是否为数字
if ! [[ "$score" =~ ^[0-9]+$ ]]; then
echo "输入无效,请输入一个整数或q/Q退出。"
continue
fi # 判断成绩等级
if (( score >= 90 && score <= 100 )); then
((excellent++))
elif (( score >= 80 && score <= 89 )); then
((good++))
elif (( score >= 70 && score <= 79 )); then
((medium++))
elif (( score >= 60 && score <= 69 )); then
((pass++))
elif (( score >= 0 && score <= 59 )); then
((fail++))
else
echo "输入的成绩无效,请输入0-100之间的整数。"
fi
done # 显示各个等级成绩的人数
echo "成绩等级统计:"
echo "优: $excellent"
echo "良: $good"
echo "中: $medium"
echo "及格: $pass"
echo "不及格: $fail"

注意:

if [[ "$score" =~ ^[qQ]$ ]]; then break fi

if ! [[ "$score" =~ ^[0-9]+$ ]]; then echo "输入无效,请输入一个整数或q/Q退出。" continue fi

[[]]:是 Bash 中用于条件判断的语法结构,称为条件表达式,是 [ ](test 命令)的增强版,支持更多的操作符和功能,比如正则表达式匹配、字符串比较、数字比较。

=~ 是 Bash 中用于正则表达式匹配的操作符。用于检查字符串是否与给定的正则表达式模式匹配。[[ "$score" =~ ^[qQ]$ ]] 用于检查变量 $score 的值是否与正则表达式 ^[qQ]$ 匹配。

"$score" 是一个变量引用,其中 $score 是变量名,引号 "" 用于防止变量值中的空格或特殊字符导致的问题。

^:表示匹配字符串的开始。

[qQ]:表示匹配字符集合中的任意一个字符。

$:表示匹配字符串的结束。

+:表示匹配前面的字符集合一次或多次。

if (( score >= 90 && score <= 100 ));

(( ... )) 是一个算术上下文,用于执行算术运算和条件判断。

if 语句中,(( ... )) 用于判断一个算术条件是否为真。如果条件为真,则返回退出状态码 0(表示成功);否则,返回非零状态码。

2.用C语言编写多进程程序,主进程每隔1分钟将系统当前时间和在线人数写入文件record.txt,子进程每隔5分钟读取一次该文件,并将文件内容显示到屏幕上。

解:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <string.h>
#include <fcntl.h> //获取当前时间并格式化为字符串
void get_current_time(char *time_str) {
time_t now;
time(&now);
struct tm *local = localtime(&now);
strftime(time_str, 20, "%Y-%m-%d %H:%M:%S", local);
} //获取在线用户数
int get_online_users() {
FILE *fp = popen("who | wc -l", "r");
if (fp == NULL) {
perror("popen");
return -1;
}
int count;
fscanf(fp, "%d", &count);
pclose(fp);
return count;
} //主进程函数
void parent_process(const char *filename) {
FILE *file;
char time_str[20];
int online_users; while (1) {
get_current_time(time_str);
online_users = get_online_users(); file = fopen(filename, "a");
if (file == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
}
fprintf(file, "Time: %s, Online Users: %d\n", time_str, online_users);
fclose(file); sleep(60);// 每隔1分钟写入一次
}
} //子进程函数
void child_process(const char *filename) {
FILE *file;
char buffer[256]; while (1) {
file = fopen(filename, "r");
if (file == NULL) {
perror("fopen");
exit(EXIT_FAILURE);
} printf("Contents of %s:\n", filename);
while (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("%s", buffer);
}
fclose(file); sleep(300);//每隔5分钟读取一次
}
} int main() {
pid_t pid;
const char *filename = "record.txt"; pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
} if (pid == 0) {
// 子进程
child_process(filename);
} else {
// 主进程
parent_process(filename);
} return 0;
}

linux期末考试题(2)的更多相关文章

  1. C++期末考试题库

    哈尔滨商业大学计算机专业C++期末考试题库 下载:题库 示例: 一.单选题:1.能作为 C ++程序的基本单位是( C )A .字符 B .语句 C .函数 D .源程序文件2.程序中主函数的名字为( ...

  2. 中期linux课程考试题

    [口头表达] 1)请描述你了解的磁盘分区的相关知识2)什么是rsync,你有什么生产环境的应用?3)在生产环境中,公司的IDC机房即将超过254台机器,请问你有什么解决方案来规划扩展IDC机房的内网网 ...

  3. (转)linux实战考试题:批量创建用户和密码-看看你会么?

    老男孩教育第五关实战考试题:批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现. 方法1:[roo ...

  4. Linux期末总结

    Linux内核学习总结 1.计算机是如何工作的? 存储程序计算机工作模型 X86汇编基础 汇编一个简单的C程序分析其汇编指令执行过程 2.操作系统是如何工作的? 三个法宝——存储程序计算机.函数调用堆 ...

  5. Linux期末复习题

    版权声明: https://blog.csdn.net/u014483914/article/details/36622451 1.More和less命令的差别         More命令通经常使用 ...

  6. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  7. 基于Web在线考试系统的设计与实现

    这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973   ...

  8. AC日记——单词替换 1.7 21

    21:单词替换 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个字符串,以回车结束(字符串长度<=100).该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区 ...

  9. AC日记——删除单词后缀 openjudge 1.7 20

    20:删除单词后缀 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个单词,如果该单词以er.ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否 ...

  10. 【Beta阶段】展示博客

    Beta阶段展示博客 blog software buaa 1.团队成员简介 Email:qianlxc@126.com Free time:8:00 7:00 a.m ~ 11:00 12:00p. ...

随机推荐

  1. [国家集训队] Tree2 题解

    加边删边 \(LCT\),标记下放同 \(luogu\) 线段树 \(2\) 一题. 时间复杂度 \(O(n\log n)\),第一次交的时候我维护 \(sum\) 不维护 \(sz\ WA\) 完了 ...

  2. [JOI 2020 Final] 火事 题解

    给一篇题解.(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\). 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况. 可以将直角 ...

  3. MONGODB数据备份与导入

    主要记录下在mongo 3.0的操作 备份示例 ./mongodump -h localhost -d liongo -o ./ 还原示例 错误方式: ./mongorestore -h 127.0. ...

  4. 【博客搭建】Hexo使用笔记

    [博客搭建]Hexo 使用笔记 Hexo 是一款前端博客框架,可以自动根据基于 Markdown 的文章生成博客网站代码. 基本概念 项目结构 目录 描述 _config.yml 网站的配置信息 th ...

  5. copilot插件使用介绍

    Copilot插件是一个由GitHub开发的人工智能代码助手,可以为开发人员提供代码自动补全和建议功能.Copilot使用了机器学习技术,通过分析大量的开源代码来自动生成代码片段和建议. 使用Copi ...

  6. MybatisPlus - [01] 概述

    MybatisPlus可以节省我们大量工作时间,所有的CURD代码它都可以自动化完成! 一.是什么   MyBatis-Plus(简称MP)是一个基于MyBatis的增强工具,其设计目的是在不改变My ...

  7. 他来了,为大模型量身定制的响应式编程范式(1) —— 从接入 DeepSeek 开始吧

    哒哒哒,他来了! 今天我们要介绍一种新型的 Java 响应式大模型编程范式 -- FEL.你可能听说过 langchain,那么你暂且可以把 FEL 看作是 Java 版本的 langchain. 话 ...

  8. .NET 10首个预览版发布:重大改进与新特性概览!

    前言 .NET 团队于2025年2月25日发布博文,宣布推出 .NET 10 首个预览版更新,重点改进.NET Runtime.SDK.Libraries .C#.ASP.NET Core.Blazo ...

  9. linux 删除文件提示 opration not permitted 处理方法(宝塔删除文件提示无法删除)

    问题描述:linux系统中使用rm -rf强制删除文件,提示 opration not permitted,无法删除成功(宝塔删除文件提示无法删除),该问题确定为已关闭所有安全软件及防止恶意篡改的软件 ...

  10. 青岛oj集训1

    2025/3/4 内容:有向无环图(DAG) 优点:DAG有很多良好性质 拓扑排序 用处:可以根据拓扑序进行dp 这次计算所用的所有边的权值都是有计算过的 一张DAG图肯定有拓扑序(bfs序,dfs序 ...