栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

深信服 2022届校园招聘 C++笔试编程题目

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深信服 2022届校园招聘 C++笔试编程题目

试卷包括不定项选择题11道,填空题11道,编程题2道,限时120分钟。

第一道编程题

题目:一个厨师出售1-6六种不同的食物,每种食物都需要使用各自的特殊厨具,厨师的灶台最多只能同时摆放3种厨具,所以厨师决定空间不够时更换最久没使用过的厨具,没种食物烹饪都需要15分钟,更换一次厨具需要6分钟,请计算按点单顺序完成点单列表所需时间。(请使用c语言完成)

输入描述:每行一个数字,1-6代表6种订单,0代表订单开始,7代表结束。

输出描述:一个数字,代表厨师需要的总时间。

备注:应该是考察最近最少使用(LRU)的思想,但不能使用STL容器。

#include 

void swap(int* a, int* b) {
	int t = *a;
	*a = *b;
	*b = t;
}

int main() {
	int t;
	scanf_s("%d", &t);
	if (t == 0) {
		scanf_s("%d", &t);
	}
	int a = t, b = 0, c = 0, ans = 15;
	while (1) {
		scanf_s("%d", &t);
		if (t == 7) {
			break;
		}
		ans += 15;
		if (b == 0) {
			if (a == t) {
				continue;
			}
			b = t;
			continue;
		}
		if (c == 0) {
			if (a == t) {
				swap(&a, &b);
				continue;
			}
			if (b == t) {
				continue;
			}
			c = t;
			continue;
		}
		if (t == a) {
			swap(&a, &b);
			swap(&b, &c);
			continue;
		}
		if (t == b) {
			swap(&b, &c);
			continue;
		}
		if (t == c) {
			continue;
		}
		swap(&a, &b);
		swap(&b, &c);
		c = t;
		ans += 6;
	}
	printf("%dn", ans);
	return 0;
}
第二道编程题

题目:小明参加机器人大赛,比赛的场地是一个n*m的方块。现在规定,机器人从左上角出发,前往右下角,因为时间紧张,小明只设计出最简单的智能算法,他的机器人只会向下或者向右。小明现在想知道,一共有多少种方案能到达终点。

输入描述:输入的第一行是两个整数n,m(1≤n,m≤10),接下来的n行有m个数字,数字只会是0或者1,0代表可以通行,1代表障碍物,数据保证终点一定是0。

输出描述:一个整数ans,表示方案数。数据随机生成,且保证答案不超过2^31。

备注:动态规划题,本小白做不出来,后来查到网上有Java题解:https://blog.csdn.net/zhangxxin/article/details/115735641,发现思路还挺简单,我按该思路用C++复现了一遍,感觉自己还是要多练练动态规划。

#include 
#include 

using namespace std;

int main() {
	int n, m;
	cin >> n >> m;
	vector> g(n, vector(m, 0));
	vector> dp(n, vector(m, 0));
	int t;
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < m; ++j) {
			cin >> t;
			g[i][j] = t;
		}
	}
	for (int i = 0; i < n; ++i) {
		if (g[i][0] == 1) {
			break;
		}
		dp[i][0] = 1;
	}
	for (int i = 0; i < m; ++i) {
		if (g[0][i] == 1) {
			break;
		}
		dp[0][i] = 1;
	}
	for (int i = 1; i < n; ++i) {
		for (int j = 1; j < m; ++j) {
			if (g[i][j] == 1) {
				continue;
			}
			dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
		}
	}
	cout << dp[n - 1][m - 1] << endl;
	return 0;
}

本人只是一名编程小白,写博客是为了总结和交流,恳请大家批评指正!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333250.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号