1.小明当起了矿场的爆破工程师。小明工作的矿场可以看作一个NxN的二维网格,小明可以将一个炸弹放置到矿场的任意位置,若干时间后炸弹会爆炸,将炸弹所在处及相邻位置炸开,让工人们可以轻松获得那些位置的矿物。现在给出这个矿场的矿物数量分布,请你帮小明找出一个最佳位置,使得炸完后能获得的矿物数量最大。你只需要告诉小明这个最大数量即可。 在第i行i列的矿物数量为a[m(当1si,j≤N),否则为0(即超出矿场边界时不会获得任何矿物)。若放置炸弹在(ij),爆炸范围为(ij),(i+1,j).(.j+1),(i-1,j),(ù,j-1)。注意小明只能把炸弹放置到矿场内,但可能爆炸范围超出边界。 输入描述 第一行一个整数N,表示小明工作的矿场大小。 接下来N行,每行N个整数。接下来的第i行形如a0[1]a[[2]..a0[N]。表示这矿场内所有位置的矿物数量。对于100%的数据,1≤N≤800.0samils100000 输出描述 输出一个整数表示小明安放一个炸弹,其爆炸范围内矿物数量之和的最大值
import sys
n = int(input()) # 读取矿场的大小
print(n)
result = []
count = 0
# 读取矿场矿物分布
for line in sys.stdin:
if count == n:
break
count += 1
line = line.split()
line = [int(x) for x in line]
result.append(line)
max_result = float('-inf') # 初始化最大值
# 遍历每个放置炸弹的位置 (i, j)
for i in range(n):
for j in range(n):
sum1 = result[i][j] # 炸弹位置的矿物
# 检查上下左右四个邻居是否在边界内,若在边界内则加上矿物数量
if i + 1 < n: # 下方
sum1 += result[i+1][j]
if i - 1 >= 0: # 上方
sum1 += result[i-1][j]
if j + 1 < n: # 右方
sum1 += result[i][j+1]
if j - 1 >= 0: # 左方
sum1 += result[i][j-1]
# 更新最大矿物数量
max_result = max(max_result, sum1)
# 输出最大矿物数量
print(max_result)
直接暴力,还能通过
2.小明正在帮一个工厂规划生产计划。小明已经知道未来n天工厂会有的情况,初始时机器热量为0,如果第i天启动生产那么热量会增加a,产生b,的收益。若第天没有生产,则热量会减少c。小明知道他应该保证在任何情况下热量都不大于闽值T,否则机器会损坏。小明想知道在最佳规划下,工厂最大能获得多少收益。注意热量最低为0,再降温将无效。 输入描述 第一行两个整数n和T,表示工厂规划天数和热量闽值。 第二行3n个整数a,b,c,a,b,c..abc,含义如题面。 对于100%的数据,1sns3000,1≤T≤100,0sa,csT,0sb≤100000. 输出描述 输出一个整数表示答案。(DP问题)
# 读取输入
n, T = map(int, input().split())
data = list(map(int, input().split()))
# 初始化生产参数数组 a, b, c
a = []
b = []
c = []
for i in range(n):
a.append(data[3*i])
b.append(data[3*i + 1])
c.append(data[3*i + 2])
# 定义dp数组,dp[i][h]表示前i天,热量为h时的最大收益
# 初始状态是 dp[0][0] = 0,其他状态初始化为无效值 -1(表示无法达到)
dp = [[-1] * (T + 1) for _ in range(n + 1)]
dp[0][0] = 0
# 遍历每一天
for i in range(1, n + 1):
for h in range(T + 1):
if dp[i-1][h] != -1: # 只有前一天这个热量状态有效时才进行转移
# 如果不生产,热量减少,收益不变
new_heat = max(0, h - c[i-1]) # 降温
dp[i][new_heat] = max(dp[i][new_heat], dp[i-1][h])
# 如果生产,热量增加并且收益增加
new_heat = h + a[i-1]
if new_heat <= T: # 确保热量不超过阈值T
dp[i][new_heat] = max(dp[i][new_heat], dp[i-1][h] + b[i-1])
# 找到在第n天所有可能热量下的最大收益
max_profit = max(dp[n])
# 输出结果
print(max_profit)
3.下列属于临界资源的是() 打印机 共用队列; 非临界:非共享资源 内存
在操作系统中,临界资源是指某种资源,当多个进程访问该资源时,如果不进行合理的同步控制,就可能会导致数据不一致或其他问题。临界资源通常是共享资源,且只有一个进程能在某个时刻独占使用。
内存虽然可以是共享的,但通常不同的进程拥有各自独立的内存空间,且内存访问由操作系统管理,避免了进程间的竞争,因此它不是典型的临界资源。
4.哪种调度算法会综合考虑作业/进程的等待时间和要求服务的时间() FCFS SJF SPF HRRN
综合考虑作业/进程的等待时间和要求服务的时间的调度算法是 HRRN(Highest Response Ratio Next,最高响应比优先调度算法)。
- HRRN 的调度原则是通过计算每个进程的响应比来决定优先级。响应比的计算公式为:
- 响应比=等待时间+服务时间服务时间
- 这样,等待时间长的作业会得到优先考虑,但同时也兼顾了服务时间较短的作业,避免了“短作业优先”(SJF)调度算法可能导致的长作业饥饿问题。
其他选项分析:
- FCFS(First Come First Serve,先来先服务):不考虑等待时间和服务时间,只按照到达顺序进行调度。
- SJF(Shortest Job First,短作业优先):只考虑服务时间,不考虑等待时间,优先调度服务时间最短的作业。
- SPF:通常是指短进程优先,与 SJF 类似,也是只考虑服务时间。
5.声明时没有初始化,也没有使用初始化参数列表,而是再构造函数里面进行初始化。
C++中 strcpy
用来复制字符串到 name
数组中。这里的name其实就是首个字符的地址,所以y采用const char指针;
#include <iostream>
#include <cstring> // 用于 strcpy 函数
using namespace std;
class student {
int no; // 学号
char name[30]; // 姓名
public:
// 构造函数,用于初始化 no 和 name
student(int x, const char *y) {
no = x;
strcpy(name, y);
}
// 成员函数,输出学号和姓名
void f() {
cout << no << name << endl;
}
};
int main() {
// 创建一个 student 对象 s1,初始化学号和姓名
student s1(1001, "AA");
// 调用成员函数 f,输出结果
s1.f();
return 0;
}
6.针对某web系统的响应时延进行了N次测试,得到N个不同的响应时延结果,要想获得最差5%的响应时延值(大于该时延值得比例为5%)应采用下列哪种数据处理方式()
散点图拟合曲线
散点(Scatter)图
概率分布(PDF)图
累计概率分布(CDF)图
7.cat /etc/passwd | awk -F: '{print $1,$7}'
用户名:密码占位符:用户ID:组ID:用户信息:主目录:默认Shell
这里的解释:
-F:
:指定:
作为字段分隔符。$1
:表示第1列(用户名)。$7
:表示第7列(默认Shell)。
1. cut -d':' -f1,3 /etc/passwd
的用法解释
cut
命令:
cut
用于从文本中提取某些特定的部分或字段。它通过分隔符将文本分为多个字段,并按用户需求输出指定字段。
参数解析:
-d':'
:指定分隔符:
,即告诉cut
命令将输入的每一行根据:
来分割成不同的字段。在/etc/passwd
文件中,字段是用冒号(:
)分隔的,每一行包含用户名、密码提示符、用户ID、组ID、用户信息、主目录、登录 Shell 等信息。-f1,3
:选择要输出的字段,即第 1 和第 3 字段。这里的1
指代每一行的第 1 个字段,3
指代每一行的第 3 个字段。
2. echo "file1 file2 file3" | xargs rm
的用法解释
echo
命令:
echo
用于在命令行中输出字符串。在这里,echo "file1 file2 file3"
会输出字符串"file1 file2 file3"
。
xargs
命令:
xargs
作用是将标准输入转换为命令的参数,通常与其他命令结合使用。它从标准输入读取数据,并将其作为参数传递给后续的命令。在本例中,xargs
将标准输入"file1 file2 file3"
传递给rm
命令。
rm
命令:
rm
是删除文件的命令。它用于删除指定的文件或目录。