小米2025届软件开发工程师(C/C++/Java)(编程题AK)

news/2024/12/22 17:58:26/

选择题好像也是25来个

编程题

T1

题目描述

小明喜欢解决各种数学难题。一天,他遇到了一道有趣的题目:他需要帮助他的朋友们完成一个排序任务。小明得到两个长度为 n 的数组a[]和b[]。他可以在两个数组对应位置进行交换,即选定一个位置 i ,交换a[ i ]和b[ i ]。他可以进行任意次交换(包括0次),他想知道按最优策略来是否可以达成让至少一个数组a[]或者b[],变得有序。有序即数组单调不减(升序)或者单调不增(降序)均可。
形式化地,给定两个长度为n的数组a[]和b[]。你可以任选一个位置i交换a[i]和b[i],可以进行任意多次这样的操作。你的目标是判断是否能够通过这些操作使得至少一个数组变得有序(升序或降序)。小明想要在老师面前证明自己,但这个题目实在有点太难了,请你帮帮他!

输入描述

第一行一个整数T,表示数据组数。
对于每组数据:
第一行包含一个整数n,表示数组的长度。
第二行包含n个整数a1,a2,…,an
第三行包含n个整数b1,b2.…bn
1≤T≤100,1≤n≤10000,1≤ai,bi≤10000。

输出描述

输出T行分别表示每组数据答案。
对每组数据,如果能够通过交换操作使至少一个数组变得有序,输出YES;否则,输出NO

样例输入

2
5
1 3 5 2 4
5 2 3 4 1
7
1 2 3 4 3 2 1
4 3 2 1 2 3 4

样例输岀

YES
NO

提示
第一组数据:
在这个样例中,其中一种可行的方法为:通过交换第2、3、4个位置,我们可以使数组 a变成升序:1 2 3 4 4
第二组数据:
无论如何都无法让任何一个数组变得有序。

C++实现代码

#include <bits/stdc++.h>
#include <iostream>
#include <climits>using namespace std;int main() {int T;int n;cin >> T;while (T--) {cin >> n;vector<int> a(n), b(n);for (int i = 0; i < n; i++) {cin >> a[i];}for (int i = 0; i < n; i++) {cin >> b[i];}int t = 0;// 递增bool flag1 = true;for (int i = 0; i < n; i++) {int tmpmn = min(a[i], b[i]);int tmpmx = max(a[i], b[i]);if (tmpmn >= t) {t = tmpmn;}else if (tmpmx >= t) {t = tmpmx;}else {flag1 = false;break;}}// 递减t = 1e9;bool flag2 = true;for (int i = 0; i < n; i++) {int tmpmn = min(a[i], b[i]);int tmpmx = max(a[i], b[i]);if (tmpmx <= t) {t = tmpmx;}else if (tmpmn <= t) {t = tmpmn;}else {flag2 = false;break;}}if (flag1 || flag2) {cout << "YES" << endl;}else {cout << "NO" << endl;}}return 0;
}

在这里插入图片描述

T2、装箱

题目描述

小明正在整理他的玩具,他遇到了一道有趣的装箱问题:他有一个容量为 N 的箱子,并且有 n 个大小为a[ i ]的玩具。除了这 n 个玩具外,还有 c 个大小均为1的填充物,它们是小明参加各种活动的纪念品,正好可以拿来填充缝隙。他的任务是确定是否可以选其中一些玩具(填充物也包含在内)放入箱子中,恰好装满箱子,而不留下任何空隙,当然,他也可以选择全部用填充物来填满整个箱子(如果埴充物足够多的话),也即装满一箱纪念品,小明也觉得很棒!

输入描述

第一行1个整数T,表示数据组数。
对于每组数据:
第一行包含三个整数N和n和c,分别表示箱子的容量和玩具的数量以及填充物数量。
第二行包含n个整数a[1],a[2],…,a[n],分别表示这n个玩具的大小。
1≤T≤100,1≤n≤500,1≤N,c,a[i]≤1000

输出描述

输出T行分别表示每组数据答案。
对每组数据,输出一行,如果可以恰好装满箱子,输出YES;否则,输出 NO。

样例输入

2
10 4 1
2 3 5 7
10 1 3
6

样例输出

YES
NO

提示
对第一组样例:
箱子的容量是 10,玩具的大小分别为2、3、5和7。
其中一种可行的方法为:玩具 2、3和5 加起来正好是 10,所以可以恰好装满箱子,因此输出 YES。
对第二组样例:
只有一个玩具,大小为6,三个大小为1的填充物,全放进去也只有9的大小,无法填满。

C++实现代码

#include <bits/stdc++.h>
#include <iostream>using namespace std;int main() {int T;cin >> T;while (T--) {int N, n, c;cin >> N >> n >> c;vector<int> v(n);for (int i = 0; i < n; i++) {cin >> v[i];}vector<int> dp(N + 1, 0);for (int i = 0; i < n; i++) {vector<int> tmp(N + 1, 0);for (int j = 0; j <= N; j++) {// 装这个玩具if (j + v[i] <= N) {tmp[j + v[i]] = max(tmp[j + v[i]], dp[j] + v[i]);}// 不装这个玩具tmp[max(0, j - v[i])] = max(tmp[max(0, j - v[i])], dp[j]);}dp = tmp;}int ans = *max_element(dp.begin(), dp.end());if (ans + c >= N) {cout << "YES" << endl;}else {cout << "NO" << endl;}}return 0;
}

在这里插入图片描述

#include <iostream>
#include <vector>using namespace std;int main() {int t;cin >> t;while(t--) {int N, n, c;cin >> N>>n>> c;vector<int> w;for(int i = 0; i < n; i++) {int tmp;cin>> tmp;w.push_back(tmp);}vector<int> dp(N+1, 0);for(int i = 0; i < n; i++) {for(int j = N; j >= w[i]; j--) {dp[j] = max(dp[j], dp[j - w[i]] + w[i]);}}if(dp[N] + c >= N) {cout << "YES" << endl;} else {cout << "NO" << endl;}}
}

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


http://www.ppmy.cn/news/1533181.html

相关文章

【Webpack】Hash 码

概述 在 Webpack 中&#xff0c;Hash 码主要用来缓存控制&#xff0c;确保每次修改文件后生成的文件名是唯一的&#xff0c;从而避免缓存问题。Webpack 在打包过程中&#xff0c;通过对文件内容进行哈希运算来生成 Hash 码&#xff0c;具体方式主要有三种&#xff1a;hash、ch…

[Day 78] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

為了幫助您完成第78天的文章"AI在保險業中的創新應用"&#xff0c;本文將從AI在保險業的主要應用場景開始&#xff0c;並提供多個代碼示例&#xff0c;每個代碼都會有詳細的解釋。文章將涵蓋人工智能技術如何提升保險業務的效率、風險管理、用戶體驗&#xff0c;並引…

Springboot3保存日志到数据库

保存日志到数据库 请求日志几乎是所有大型企业级项目的必要的模块&#xff0c;请求日志对于我们来说后期在项目运行上线一段时间用于排除异常、请求分流处理、限制流量等。请求日志一般都会记录请求参数、请求地址、请求状态&#xff08;Status Code&#xff09;、SessionId、…

代码随想录算法训练营第十四天|递归 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度

226.翻转二叉树 翻转一棵二叉树。 思路&#xff1a; 在这里需要注意的是&#xff0c;在递归的时候唯独中序遍历是不可用的&#xff0c;这是因为先对左子树进行了反转&#xff0c;又对自身进行了反转&#xff0c;对自身反转后原本的左子树变成了右子树&#xff0c;如果此时又轮…

Camera Raw:打开图像

在图像工作流程中&#xff0c;无论是 Raw 格式图像文件还是 JPEG、TIFF 文件&#xff0c;都可以先使用 Camera Raw 打开并调整后&#xff0c;再进入其它 Adobe 软件如 Photoshop 中进行进一步的编辑和处理。 一、打开 Raw 格式图像 1、通过 Adobe Bridge 打开 在 Adobe Bridge …

PHP爬虫APP程序:打造智能化数据抓取工具

在信息爆炸的时代&#xff0c;数据的重要性日益凸显。PHP作为一种广泛使用的服务器端脚本语言&#xff0c;因其强大的功能和灵活性&#xff0c;成为开发爬虫程序的理想选择。本文将探讨如何使用PHP构建一个爬虫APP程序&#xff0c;以及其背后的思维逻辑和实现步骤。 什么是PHP爬…

SEO友好的wordpress模板 应该具体哪些特征

在数字营销的时代&#xff0c;搜索引擎优化(SEO)对于任何网站来说都是至关重要的。WordPress作为全球最受欢迎的内容管理系统之一&#xff0c;提供了大量的模板(也称为主题)供用户选择。一个SEO友好的WordPress模板不仅可以帮助您的网站在搜索引擎中获得更好的排名&#xff0c;…

Rust的前端Tauri编程-基于JS框架的初步探索

上次的项目做完后&#xff0c;有一项遗憾&#xff0c;没有返回结果&#xff0c;而结果是一个html表格&#xff0c;我想用html直接在窗口显示&#xff0c;这时发现R里面包括slint没有很直接的方法&#xff0c;直接弹出浏览器有点太简单没有挑战。这是就被推送了他的竞争对手&…