2024秋招西山居游戏开发SEED种子实习笔试题
西山居游戏开发SEED种子实习
2024年秋招笔试题目,仅供参考,请大佬多多指教
选择题
逆波兰数,TCP,操作系统FIFO,C语言大小端
填空题
一道LUA脚本写结果,一道并发存储优化题,计算机系统结构里面的知识
算法题
总共三道题目,做出来了两道,最后一道是动态规划,没时间写了
T1
题目
小明对偶数十分痴迷。当小明拿到一个数组,只有当这个数组的和是偶数才会让小明感到开心。 现在小明有一个数组,小明每次可取出数组中的一个数对其进行整除2的操作。问最少需要多少次操作,才能得到使之开心的数组。
输入描述
第一行输入为 T ,表示有 T 组数据, 每组数据第一行输入为 n ,表示数组长度, 接下来 n 个正整数 ai ,表示长度为 n 的数组
输出描述
每组数据输出一个整数,表示最少操作次数
思路
CF原题,容易发现,一个数组的元素和要么是奇数要么是偶数,如果一开始是偶数的话那么我们呢就没有必要进行操作,否则我们必须要改变一个数的奇偶性才能把数组变为好的,因为任意两个数之间是不会相互影响的,所以我们不需要同时对两个数进行操作,我们只需要遍历一遍所有的数,记录每一个数改变奇偶性所需要的最少操作次数,那么答案就是所有最小操作次数中的最小值。
代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=53;
int a[N];
int main()
{
int T;
cin>>T;
while(T--)
{
int minnum=0x3f3f3f3f;
int ans=0;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
ans+=a[i];
int cnt=1;
while((a[i]&1)==((a[i]/2)&1))
cnt++,a[i]/=2;
minnum=min(minnum,cnt);
}
if(ans&1) printf("%d\n",minnum);
else puts("0");
}
return 0;
}
T2
题目
小明发现了一张爷爷留下的字条,但是读不通其中的字意。小明这才想起了爷爷之前教过自己一套加密字符的方法。对于任意一个字符串,按照从头部插入,再从尾部插入的方法以打乱字符串的顺序。 如给定一个字符串" kingsoft ",加密过程如下""->" k "->" ki "->" nki "->" nkig "->" snkig "->" snkigo "->" fsnkigo "->" fsnkigot "小明假定爷爷是用这种方式加密的字符串,请问加密前的字符串是什么
思路
模拟题,类似双指针遍历把字符串取出来就行了
代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string decrypt(string encrypted) {
string result = "";
int len = encrypted.length();
int mid = len / 2 -1;
result+=encrypted[mid];
// cout<<encrypted[mid+1]<<endl;
for (int i = 1; i <= mid; i++) {
result += encrypted[mid+i];
result += encrypted[mid-i];
}
if (len % 2 == 0) {
result += encrypted[len-1];
}
//reverse(result.begin(), result.end());
return result;
}
int main() {
string encrypted = "fsnkigot";
string decrypted = decrypt(encrypted);
cout << decrypted << endl; // 输出 "kingsoft"
return 0;
}
T3
题目
小明手上有两个长度为 n 的数组 a 和 b ,小明对这两个数组的喜欢程度等于 ai * bi 的和 小明有一张操作卡,可以选择一个区间,将 a 中这个区间进行翻转。该操作卡只能使用一次。 问使用操作卡之后,小明对这两个数组的最大喜欢程度是多少。 )
输入描述
第一行,一个整数 n ,(1<n<5000) 第二行, n 个整数,表示数组 a ,(1<ai<10000000)
第二行, n 个整数,表示数组 b ,(1<bi<10000000) )
输出描述
输出一个数,表示小明的最大喜欢程度
输入样例:
3
10 1 1
1 10 1
输出
102
思路
一眼动归,写不完了,润