河北邯郸网站制作硬件开发设计流程

news/2025/9/24 1:08:38/文章来源:
河北邯郸网站制作,硬件开发设计流程,深圳深圳网站开发,上海建筑设计公司排名前20字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串#xff0c;每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字#xff0c;不同字符映射为不同的数字。这样每个字符串就可以看…字节跳动后端工程师实习生笔试题链接 笔试题 1. 最大映射2. 木棒拼图3. 魔法权值4. 或与加 1. 最大映射 有 n 个字符串每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字不同字符映射为不同的数字。这样每个字符串就可以看做一个整数唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大 时间限制C/C 1秒其他语言2秒 空间限制C/C 32M其他语言64M 输入描述 每组测试用例仅包含一组数据每组数据第一行为一个正整数 n 接下来有 n 行每行一个长度不超过 12 且仅包含大写字母 A-J的字符串。 n 不大于 50且至少存在一个字符不是任何字符串的首字母。 输出描述 输出一个数表示最大和是多少。 示例1 输入例子 2 ABC BCA 输出例子 1875 有时间找了一份笔试题做做结果还是一言难尽这些编程题的题目都需要深刻的去理解不然忽略一小段话一个小细节都会让自己在电脑面前怀疑半天刷了一些算法题能力提升没提升不知道反正心里承受能力是一定会提升的行了下面看看这份笔试题。 题目解析这道题的输入是n条字符串字符串为A-J映射为0-9不同字符映射为不同的数字如示例1可以将ABC映射为987则BCA就为879和为1866或者将ABC映射为897则BCA就为978和为1875或者将ABC映射为789则BCA就为897和为1696最大值为1875所以输出最大值即可。还有最重要的一个条件且它们的字符串不能有前导零 意思就是字符串的首字母不能赋值为0输入描述中也说过至少存在一个字符不是任何字符串的首字母题目大致意思也就这些。 解题思路我当时看完题目一想好吧不会我承认我是菜狗。不会怎么办呢百度呗看了某位佬的思路和解法这位佬将这道题也只写了一半没有将字符串不能有前导零考虑在内但有了思路接下来就自己思考思考吧不然就会变得越来越菜。大致思路要求得最大和与字符出现的位置和次数有关对于某一字符串来说越排在前面的字符它所占的权值就越大所以可以对字符串的位置设置权值如1,10,100,1000…等权重有那么多种为什么要设置为1,10,100,1000…这种这种设置对于后续来说方便计算结合下图来看由下图知最后我们只需将权值与分配的数字相乘就可以得到最大和。 代码如下 #include iostream #include string #include algorithm #include cmath using namespace std;int main() {int n;cin n;string str;long long MAX 0, A[10] {0};while (n--) {cin str;for (int i str.length() - 1; i 0; i--) {A[str[i] - A] pow(10, str.length() - i - 1);}}sort(A, A 10);for (int i 0; i 9; i) {MAX (A[i] * i);}cout MAX; } 上述代码没有考虑到它们的字符串不能有前导零这一条件所以20个样例过了17个然后思考怎么设置零不能出现在最前面的位置试着思考思考。用setmapunordered_map?用这类容器将出现的首字符记录下来解决应该可以解决我没想到因为还需要对权重进行排序而上述容器是不能排序的又或者说他们是已经排好序的所以我直接再用一个数组hash来记录首字母的出现情况给权重排序时顺便给hash也排序因为需要对他们一一对应完整代码如下 #include iostream #include vector #include string #include math.h #include algorithm #include set using namespace std;int main() {long long ret 0;int n 0;cin n;string str;long long weight[10] { 0 }; // weight用来记录权重int ch[10] { 0 }, hash[10] { 0 }; // hash用来记录哪个字母是首字母,ch用来记录数字分配给哪个字母,hash和ch搭配起来使用for (int i 0; i 10; i)ch[i] i; // 首先就将0给A,1给B...i表示哪个数字,ch[i]表示哪个字母for (int i 0; i n; i){cin str;int size str.size();for (int i size - 1; i 0; --i){weight[str[i] - A] pow(10, size - i - 1);if (i 0)hash[str[i] - A] 1; // 记录哪个字母是在首位出现的}}// 对权值和对应的字母排序for (int i 0; i 10; i){for (int j i 1; j 10; j){if (weight[i] weight[j]){swap(weight[i], weight[j]);swap(ch[i], ch[j]);}}}int i 1;while (hash[ch[0]]) // hash[ch[0]]表示分配0的字母是否在字符串的首位出现{swap(weight[i], weight[0]);swap(ch[i], ch[0]);i;}for (int i 0; i 10; i)ret i * weight[i];cout ret;return 0; }当然还有别的解法欢迎各位佬分享自己的心得可以互相交流交流。 2. 木棒拼图 有一个由很多木棒构成的集合每个木棒有对应的长度请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上简单多边形即不会自交的多边形。 初始集合是空的有两种操作要么给集合添加一个长度为 L 的木棒要么删去集合中已经有的某个木棒。每次操作结束后你都需要告知是否能用集合中的这些木棒构成一个简单多边形。 时间限制C/C 1秒其他语言2秒 空间限制C/C 32M其他语言64M 输入描述 每组测试用例仅包含一组数据每组数据第一行为一个正整数 n 表示操作的数量(1 ≤ n ≤ 50000) 接下来有n行每行第一个整数为操作类型 i (i ∈ {1,2})第二个整数为一个长度 L(1 ≤ L ≤1,000,000,000)。如果 i1 代表在集合内插入一个长度为 L 的木棒如果 i2 代表删去在集合内的一根长度为 L的木棒。输入数据保证删除时集合中必定存在长度为 L 的木棒且任意操作后集合都是非空的。 输出描述 对于每一次操作结束有一次输出如果集合内的木棒可以构成简单多边形输出 “Yes” 否则输出 “No”。 示例1 输入例子 5 1 1 1 1 1 1 2 1 1 2 输出例子 No No Yes No No 题目解析这道题的意思简单明了有一个集合这个集合存放正整数这些正整数代表着多边形的边可以向这个集合插入或者删除数据如果这些边可以组成一个多边形那么输出Yes否则输出No每次插入或者删除都需要输出并且将要删除的边一定是在这个集合中的。解题思路第一次读完题后完全没思路这根本和leetcode中的算法题不一样而且经过第一道题的铺垫觉得这道题应该很高大上因为与多边形有关所以往难的方向猜一定有某位数学家得出通过边的长短来计算能否构成多边形的公式脑海中出现一位数学家坐在木质凳子上用一根笔在纸上留下绚丽多彩的一笔但我肯定不知道这个公式以为这道题又要寄了为了这道题不寄我明白我必须要做出一些行动来尝试尝试我就往简单的方向猜提到能否构成多边形通常做的最多的就是判断三条边能否构成一个三角形而想要三条边构成一个三角形那么只需要三条边中的最长边小于另外两边之和那么判断构成多边形的条件是不是只要最长的边小于其余的边之和即可 我不知道所以就尝试尝试呗。分析其余边之和大于最长边的长度那么其余边就可以将最长边给围起来其余边之和比最长边越长那么所围的面积就越大其余边之和比最长边小那么就围不在一起就不能构成多边形。 代码如下(代码有些丑陋有优化的地方欢迎指出。曾经看到一个视频视频中的人说代码对于程序员来说是隐私就好比是我们穿着内裤的颜色代码写的差我认但你不能看我“内裤”的颜色) #include iostream #include map using namespace std;void print(maplong long, int hash, long long sum, int size) {if (size 3)cout No endl;else if (size 3){int max_len (--hash.end())-first; // 每次取出最长的边int tmp sum - max_len;if (tmp max_len)cout Yes endl;elsecout No endl;} }int main() {int n 0, size 0;maplong long, int hash;long long sum 0;cin n;while (n--){int op 0, len 0;cin op len;if (op 1){sum len;hash[len];size;print(hash, sum, size);}else if (op 2){sum - len;hash[len]--;if (hash[len] 0)hash.erase(len);--size;print(hash, sum, size);}}return 0; }3. 魔法权值 给出 n 个字符串对于每个 n 个排列 p按排列给出的顺序(p[0] , p[1] … p[n-1])依次连接这 n 个字符串都能得到一个长度为这些字符串长度之和的字符串。所以按照这个方法一共可以生成 n! 个字符串。 一个字符串的权值等于把这个字符串循环左移 i 次后得到的字符串仍和原字符串全等的数量i 的取值为 [1 , 字符串长度]。求这些字符串最后生成的 n! 个字符串中权值为 K 的有多少个。 注定义把一个串循环左移 1 次等价于把这个串的第一个字符移动到最后一个字符的后面。 时间限制C/C 1秒其他语言2秒 空间限制C/C 32M其他语言64M 输入描述 每组测试用例仅包含一组数据每组数据第一行为两个正整数 n, K n 的大小不超过 8 K 不超过 200。接下来有 n行每行一个长度不超过 20 且仅包含大写字母的字符串。 输出描述 输出一个整数代表权值为 K 的字符串数量。 示例1 输入例子 3 2 AB RAAB RA 输出例子3 题目解析这道题的意思还是有些难理解的接下来分析一下有n个字符串这n个字符串可以通过不同的排列组成新的字符串会有n*(n-1)*(n-2)*…*2*1个新的字符串然后就是这个权值将组成新的字符串向左移动 i 位 (i 的取值为 [1 , 字符串长度])如果移动后的字符串等于移动前的字符串那么这个字符串的权值就1输出组合后权值为 K 的新字符串的个数题目的是、大致意思就这些。解题思路要组成新的字符串全排列的算法就可以算出(知道的就用递归做不知道的建议先学习一下全排列)组成新的字符串后那就开始向左移动要是单纯的将新的字符串进行移动那么太耗时了所以不建议有另一个思路就是将新的字符串加等于本身的字符串然后只需要将寻找的区间往后滑动即可不善于表达如下图所示 代码如下 #include iostream #include vector #include string using namespace std;int n 0, k 0, ret 0; bool check[10]; // 检查该数据的位置是否使用true表示使用false表示未使用 vectorstring combstr; // 组合后的字符串数组 vectorstring path; // 已选取的字符串 // 全排列算法 void dfs(vectorstring nums) {if (path.size() n){string comb;for (auto str : path)comb str;combstr.push_back(comb);// 顺便处理combstrcombstr[combstr.size() - 1] combstr[combstr.size() - 1];return;}for (int i 0; i n; i){if (!check[i]){check[i] true;path.push_back(nums[i]); // 选取该位置的字符串dfs(nums);check[i] false;path.pop_back();}} } int main() {cin n k;vectorstring nums(n);int len 0;for (int i 0; i n; i){cin nums[i];len nums[i].size();}dfs(nums);for (int i 0; i combstr.size(); i){string prostr combstr[i].substr(0, len); // 原始字符串int count 0;for (int j 1; j len; j) // 取值为[1, 字符串长度]{string tmp combstr[i].substr(j, len);if (prostr tmp)count;}if (count k)ret;}cout ret endl;// 检查组合后的字符串是否正确//for (int i 0; i combstr.size(); i)// cout combstr[i] endl;return 0; }4. 或与加 给定 x, k 求满足 x y x | y 的第 k 小的正整数 y 。 | 是二进制的或(or)运算例如 3 | 5 7。 比如当 x5k1时返回 2因为516 不等于 5|15而 527 等于 5 | 2 7。 时间限制C/C 1秒其他语言2秒 空间限制C/C 32M其他语言64M 输入描述 每组测试用例仅包含一组数据每组数据为两个正整数 x , k。 满足 0 x , k ≤ 2,000,000,000。 输出描述 输出一个数y。 示例1 输入例子 5 1 输出例子 2 题目解析这道题的题意清晰明了但是做法肯定不是从1开始暴力求解这样耗时非常高所以用别的方法解决题目中出现与或等逻辑算术那么就要向二进制的方向思考1 | 0 1, 1 | 1 1所以只要找x的二进制为0的位置在二进制为0的位置加1就不会向前进位这样x y x | y还有一个问题是找第k个假设x为10二进制为1010我们可以在0的位置插入1插入1后如:0001,0100,0101这3种只看x为0的位置那么上述是0的位置为1,10,11如果k1那么y0001如果k2那么y0100如果k3那么y0101如果k4那么y10000…所以我们可以将k的二进制位放在x二进制为0的位置上其余位置附0即可如下图所示 2. 代码如下 #include iostream #include vector using namespace std;int main() {long long x 0, k 0;cin x k;vectorint binary; // 存放k二进制位的数组while (k){binary.push_back(k % 2);k / 2;}long long tmp 1;long long y 0;int count 0;while (count binary.size()){while (x % 2){x / 2;tmp * 2;}if (binary[count] 1){y tmp;}x / 2;tmp * 2;count;}cout y endl;return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

巨野网站建设长沙网

原来一直用SortList,SortedDictionary来作为键值对存储的排序集合来用,心中就默认是以key按ascall排序来存放的,在之前的案例中也没有出现问题,在最近一个demo中,打破了原来的自以为是的认识,因为在key中不…

惠州网站建设产品单页设计模板

React 中使用高阶函数 随着前端技术的快速发展,React 作为一种流行的 JavaScript 库,被广泛应用于 Web 开发中。在 React 中,高阶函数被引入作为一种强大的工具,用于增强组件的复用性和可维护性。本论文将介绍 React 中使用高阶函…

云南省建设工程投标中心网站asp.net窗体网站

一、说明 中号机器学习模型在训练后必须使用测试集进行评估。我们这样做是为了确保模型不会过度拟合,并确保它们适用于现实生活中的数据集,与训练集相比,现实数据集的分布可能略有偏差。 但为了使您的模型真正稳健,仅仅通过训练/测…

旅游网站设计方案怎么做企业公示信息查询系统湖北

小补充,在上一篇转载的文章中《RedHat/Fedora等非ubuntu的Linux系统星空极速netkeeper拨号上网》中提到{方法一,Debian下突破星空极速拨号用了一个“pon”命令,完整的拨号命令是“pon dsl-provider”,}&…

设计一个学院网站哪里有网站建站公司

要在CSS3中实现动画的无限循环,你可以使用animation 属性和 infinite 关键字。以下是一个示例: keyframes myAnimation {0% { /* 起始状态 */ }50% { /* 中间状态 */ }100% { /* 结束状态 */ }}.element {animation: myAnimation 2s infinite; /* 设置动…

手机网站推荐做一个简单网站

MySQL数据库的导入,有两种方法:1) 先导出数据库SQL脚本,再导入;2) 直接拷贝数据库目录和文件。在不同操作系统或MySQL版本情况1. 概述MySQL数据库的导入,有两种方法:1) 先导出数据库SQL脚本,再导…

自己做产品品牌网站专业订制网站制作

UIAbi lity的启动模式简介 一共有四种:singleton,standard,specified,multion。在项目目录的:src/main/module.json5。默认开启模式为singleton(单例模式)。如下图 singleton(单实例模式)启动模式 每个UIAbility只存在唯一实例。任务列表中只会存在一…

太仓做企业网站建筑模板规格型号

在现代社会中,移动设备和互联网已经成为我们日常生活中不可或缺的一部分。为了方便我们的网络使用,越来越多的人选择使用公共WiFi,但是安全性成了很大的问题。而随着共享WiFi贴的出现,我们是否可以更加安全便捷地使用WiFi呢&#…

央企 网站建设 公司网站前置审批项

1.工具-->选项-->文本编译器-->C#-->高级-->勾选支持导航到反编译源(试验)

仿it资讯类网站源码搜索引擎关键词排名

HTTP基础 基本概念:HTTP是一种计算机之间交流通信的规范,它允许数据在两点之间传输,这个过程可以包括中转或接力。HTTP不仅仅包括文本,还可以包括图片、音频等超文本。状态码:HTTP状态码分为五类: 2xx&…

电子商务公司简介怎么写镇江网站建设方式优化

课程名称2020年最新天码营-Java提高班,资源教程下载课程介绍初学者先广在精,关注代码背后的实现,关注内功修炼,了解实现原理和思想,形成自己完整的技术体系,知识成片之后就容易触类旁通,进步的速…

做布料的著名网站桂林市卫生学校

1.什么是编程? 编程是让计算机执行特定任务的过程,通过使用某种编程语言编写代码,让计算机解决某个问题,并最终得到一个结果 2.计算机程序 计算机程序是一组计算机能识别和执行的指令,告诉计算机该做什么 3.计算机语…

海外制作网站电池外贸一般在哪些网站做

看看普通人和高手是如何回答这个问题的? 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

dede织梦建站教程wordpress主导航菜单

桂林电子科技大学 学校层级:双非 调剂专业:081000 信息与通信工程 发布时间:2024.1.21 发布来源:网络发布 背景:欢迎广大08工学专业考生调剂进我的课题组,电子信息专业,也欢迎往届同学调剂…

Markdown基本与阿法

欢迎使用 OpenWrite 开始写作您的文章... 这是一个二级标题 您可以使用 Markdown 语法:粗体文字 斜体文字 行内代码// 代码块示例 console.log(Hello OpenWrite!);这是一个引用块链接示例

seo站长工具平台phpmysql网站开发实例

如果有重装过anaconda,在C盘的用户目录下,会有一个名叫.condarc的文件会自动生成。 当使用conda install和conda create命令会出现下面的问题:Collecting package metadata (current_repodata.json): failed 解决方案: 1.打开Anac…

个人 可以备案做分类信息网站吗免费广告发布平台app

1、PNG图片类型 PNG格式有8位、24位、32位三种,下面是一些术语: 索引透明:类似于GIF,某一像素只有全透和全不透明两种效果Alpha透明:半透明PNG8 8位的PNG最多支持256(2的8次方)种颜色&#xff0…

做网站运营用什么配置电脑平面设计网站大全有哪些

将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? 输入格式: 输入在一行中给出待换的零钱数额x∈(8,100)。 输出格式: 要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出…

凡科网站怎么做建站好看的登录页面自适应模板

概述 eclipse是优秀的老牌IDE,使用eclipse是一种身份的象征,代表了老程序员。eclipse每年都会更新,也越来越好用。但下载的时候,速度一直有点慢,eclipse官网提供了国内镜像,下载很快。 操作步骤 第一步&…

哪个网站代做ppt便宜图片在线生成网址

理想架构的高回退Doherty功率放大器理论与仿真-Multistage 参考: 三路Doherty设计 01 射频基础知识–基础概念 Switchmode RF and Microwave Power Amplifiers、 理想架构的Doherty功率放大器(等分经典款)的理论与ADS电流源仿真参考&#x…