2025年深圳大学夏令营/预推免计算机保研上机真题(附 AC 代码 + 解题思路)
2025年深圳大学计算机保研复试机试真题
2025年深圳大学计算机保研复试上机真题
历年深圳大学计算机保研复试上机真题
历年深圳大学计算机保研复试机试真题
更多学校题目开源地址:https://gitcode .com/verticallimit1/noobdream
百度一下 N诺 即可查看,输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

最大递增子序列和
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和. 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。
输入输出格式
输入描述:
输入包含多组测试数据。 每组测试数据由两行组成。第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。
输出描述:
对于每组测试数据,输出其最大上升子序列和。
输入输出样例
输入样例#:
7 1 7 3 5 9 4 8
输出样例#:
18
#include <iostream>
#include <cstdio>
using namespace std;
const int MAX = 1000;
int arr[MAX];
int dp[MAX]; // 以arr[i]为结尾的最大上升子序列和
int MaxIncSubsequence(int k) {
int sum = 0;
for (int i = 0; i < k; ++i) {
dp[i] = arr[i];
for (int j = 0; j < i; ++j) {
if (arr[i] > arr[j]) {
dp[i] = max(dp[i], dp[j] + arr[i]);
}
}
sum = max(sum, dp[i]);
}
return sum;
}
int main() {
int k;
while (scanf("%d", &k) != EOF) {
for (int i = 0; i < k; ++i) {
scanf("%d", &arr[i]);
}
printf("%d\n", MaxIncSubsequence(k));
}
return 0;
}
素数统计
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
编写一个程序,接收输入数据,并判断输入数据是否为素数。如果是,则输出 x is a prime,否则输出 x is not a prime,其中 x 表示输入的数据。
最后输出这些数字中素数的个数、素数的和、以及素数的平均值(平均值保留小数点后两位小数)。
输入输出格式
输入描述:
1. 第一行输入一个整数 ,表示有 个数字; 2. 第二行输入 个正整数。 数据范围 每个输入数字
输出描述:
总共输出 行: 1. 前 行:依次输出每个数字是否为素数的判断信息; 2. 最后一行:按格式输出三个数据,用空格隔开:素数个数、素数总和、平均值(强制保留2位小数),格式为 `count sum average`。
输入输出样例
输入样例#:
10 1 2 3 4 5 6 7 8 9 10
输出样例#:
1 is not a prime 2 is a prime 3 is a prime 4 is not a prime 5 is a prime 6 is not a prime 7 is a prime 8 is not a prime 9 is not a prime 10 is not a prime 4 17 4.25
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
// 判断素数函数,兼容2e9大数,C++98标准
bool isPrime(long long x)
{
if (x <= 1)
return false;
if (x == 2)
return true;
if (x % 2 == 0)
return false;
long long sqrt_x = sqrt((double)x);
for (long long i = 3; i <= sqrt_x; i += 2)
{
if (x % i == 0)
return false;
}
return true;
}
int main()
{
int N;
cin >> N;
long long count = 0;
long long sum = 0;
for (int i = 0; i < N; ++i)
{
long long num;
cin >> num;
if (isPrime(num))
{
cout << num << " is a prime" << endl;
count++;
sum += num;
}
else
{
cout << num << " is not a prime" << endl;
}
}
double avg = 0.0;
if (count > 0)
{
avg = (double)sum / count;
}
// 保留两位小数输出
cout << count << " " << sum << " " << fixed << setprecision(2) << avg << endl;
return 0;
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)