首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
呆喵挠琴
获赞
217
粉丝
13
关注
5
看过 TA
128
复旦大学
2024
C++
IP属地:上海
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑呆喵挠琴吗?
发布(118)
评论
刷题
呆喵挠琴
关注TA,不错过内容更新
关注
2021-11-03 11:18
复旦大学 C++
题解 | #完全数计算#
题目的主要信息: 完全数是指除了它本身以外所有因子之和等于它本身的数。 要求输入n,输出n以内(含n)完全数的个数。 方法一: 遍历一遍n内的所有整数,用一个整数count来记录n内的完全数个数。首先计算每个整数num的所有因子,找因子的方法是枚举num内的所有整数,判断是否能被num整除,若能整除,则是num的因子。再计算它的真因子之和,与整数本身进行比较,若相同则表示这个整数是完全数,count加1。 具体做法: #include<iostream> #include<vector> using namespace std; vector<int>...
0
点赞
评论
收藏
分享
2021-11-02 20:12
复旦大学 C++
题解 | #素数伴侣#
题目的主要信息: 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”。 我们需要从一组数中,找出最多对的素数伴侣。 方法一:匈牙利算法 偶数+偶数=偶数,必不是素数,因此素数只能是奇数+偶数。我们把输入的这一组数分成奇数和偶数,就得到了二分图,在这两组之间用匈牙利算法作匹配。 首先我们遍历一遍所有数字,建立他们之间所有可能的联系,便于后面的调整。接下来开始找最优连接方案。 每次取奇数p,遍历偶数,判断是否能和奇数组成素数伴侣,如果偶数q没有和别人结成伴侣则建立p和q之间的关系;如果这个偶数q已经和别的奇数k结成伴侣,那么递归查找k的下一位能建立关系的偶数,如果找到了p和q建立关系,...
0
点赞
评论
收藏
分享
2021-11-14 13:21
已编辑
复旦大学 C++
题解 | #查找兄弟单词#
题目的主要信息: 兄弟单词为只通过交换该单词字母顺序就可以变为待查找单词相同。同时,兄弟单词要求和原来的单词不同。 输入n个单词,从中找出所有的兄弟单词,输出兄弟单词的数量,以及输出指定的兄弟单词。 方法一: 遍历一遍所有单词,逐个判断当前单词words[i]是否为str的兄弟单词,若为兄弟单词则把它加到bros数组中,最后判断bros的大小,若为0,则表示没有兄弟单词,否则按照索引输出指定的兄弟单词。判断两个单词是否为兄弟单词,只需要对两个字符串的字符按照字母表排序,若排序后两个单词相同则为兄弟单词,前提是这两个单词不相同。同时需要注意的是,指定的兄弟单词索引是从1开始的,实际在bros...
0
点赞
评论
收藏
分享
2021-11-01 13:56
复旦大学 C++
题解 | #整数与IP地址间的转换#
题目的主要信息: ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。 需要完成ip和整数之间的相互转换。 方法一:位运算 ip地址转整数:由原理知,ip地址的每一段都是一个整数,将每四段整数提取出来拼在一起就是长整数。每一段都有八位,因此在拼接的时候,第一段需要向左位移24位,第二段向左位移16位,第三段位移8位,第四段不用位移。需要注意的是,整个过程是无符号的。 整数转ip地址:ip地址的每一段是8位二进制数,因此整数转转ip地址时,向左位移24位,最后剩下的八位即为ip地址的第一段;向左位移16位,低八位为ip地址第二...
0
点赞
评论
收藏
分享
2021-11-01 10:44
复旦大学 C++
题解 | #字符串合并处理#
题目的主要信息: 本题是需要将两个字符串进行合并,合并之后还需要进行一些变换。具体要求如下: 第一步:将输入的两个字符串str1和str2进行前后合并。 第二步:对合并后的字符串按照奇偶位进行排序。 第三步:对排序后的字符串中的'0'-'9'、'A'-'F'和'a'-'f'字符,进行转换操作。 方法一: 首先从输入的字符串中按照奇偶位置存下对应的奇数串和偶数串,分别对这两串字符串用sort函数进行排序,排序后按照奇偶位置重新合并成新的字符串,最后遍历字符串,对字符逐个转换。字符转换采用查表法,先预先构造了两个字符串strlist1和strlist2,分别存储转换前和转换后的字符,每次转换时...
0
点赞
评论
收藏
分享
2021-10-31 17:52
复旦大学 C++
题解 | #字符串加解密#
题目的主要信息: 对输入的字符串进行加解密,英文字母用该英文字母的后一个字母替换,同时字母变换大小写;数字则把该数字加1。其他字符不做变化。 解密方法为加密的逆过程。 方法一: 构造加密encoder和解密decoder两个函数。加密和解密的思路很像,这里主要讲讲加密的过程,解密类似。遍历一遍字符串,若当前字符是英文字母,判断是大写还是小写,通过ASCII码的相对位置转换大小写,再将ASCII码加一,变为后一位字母;若当前字符是数字,则直接将ASCII码加一。需要注意的是,z、Z和0是边界情况,需要单独判断处理。 具体做法: #include<iostream> #inclu...
0
点赞
评论
收藏
分享
2021-12-06 15:30
已编辑
复旦大学 C++
题解 | #密码截取#
题目的主要信息: 找出最长的对称密码可以转换为求最长回文。回文有两种形式,一种是形如ABA式对称的,另一种是形如ABBA式对称的。 方法一:中心扩展 遍历一遍字符串,计算每个字符为中点时能构成的最长回文串,输出最大的长度。 判断字符串是否为回文串可以从中点出发向两边扩展,判断左右两侧是否相同,若相同则继续扩展;若不同,则停止扩展,计算当前的回文串长度。需要注意的是ABA式的回文串中点是一个字符,ABBA式回文串的中点是两个字符,所以我们遍历考虑每个字符当中点能构成的回文串时,这两种形式的长度都要计算。 具体做法: #include<iostream> #include<st...
0
点赞
评论
收藏
分享
2021-10-29 13:10
已编辑
复旦大学 C++
题解 | #单词倒排#
题目的主要信息: 对字符串中的所有单词进行倒排。 非构成单词的字符均视为单词间隔符; 倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符; 方法一: 逐个字符输入,用string变量word记录每一个单词,ans保存输出的结果。首先判断当前字符是否为字母,若为字母,则加到word中;若不为字母,说明到了单词的结尾,需要把当前的单词word加到ans中。若ans为空,说明之前还没有单词加入,那么直接把word放到ans里就好了;若ans不为空,说明之前已经有单词加入了,当前的单词要放在ans的前面,并且以空格隔开。word加到ans...
0
点赞
评论
收藏
分享
2021-10-27 20:39
复旦大学 C++
题解 | #蛇形矩阵#
题目的主要信息: 输出从1开始的自然数依次排列成的一个矩阵上三角形。 方法一:找规律 蛇形矩阵的每一行数字是有规律的,如下图所示: 若第i行的第一个数字为j,则第i+1行的第一个数字为j+i; 若每i行的第一个数字为j,则该行的第二个数字为i+(j+1),第三个数字为i+(j+2),以此类推。 具体做法: #include<iostream> using namespace std; int main(int argc, char** argv) { int n; while(cin>>n){ int num=1; ...
0
点赞
评论
收藏
分享
2021-10-27 13:36
复旦大学 C++
题解 | #图片整理#
题目的主要信息: 根据题意,把英语单词按照大小(ASCII码值从小到大)排列。 方法一: 用sort函数对str进行排序。 具体做法: #include <iostream> #include <string> #include <algorithm> using namespace std; int main(){ string str; while(cin>>str)//可能有多组输入 { sort(str.begin(),str.end());//排序 cout<<s...
0
点赞
评论
收藏
分享
2021-10-27 11:08
复旦大学 C++
题解 | #字符串排序#
题目的主要信息: 将输入字符串中的字符按如下规则排序: 英文字母从 A 到 Z 排列,不区分大小写。 同一个英文字母的大小写同时存在时,按照输入顺序排列。 非英文字母的其它字符保持原来的位置。 方法一: 首先我们对字符串中的英文字母进行排序,由于统一英文字母的大小写要按照输入顺序进行排序,所以我们从26个字母表出发,按照字母顺序,每次从str中选出字母保存到alpha中,这样不仅能按照字母表排序还保留了大小写的输入顺序。题目中还要求其他字符保持原来的位置,因此再遍历一遍str,若当前位置为英文字母,则将其替换为排序后的字母,若当前位置不为英文字母则不发生改变。 具体做法: #includ...
0
点赞
评论
收藏
分享
2021-10-25 14:26
已编辑
复旦大学 C++
题解 | #判断两个IP是否属于同一子网#
题目的主要信息: 利用子网掩码可以判断两台主机是否中同一子网中。若两台主机的IP地址分别与它们的子网掩码相“与”后的结果相同,则说明这两台主机在同一子网中。 掩码与IP每一段在 0 - 255 之间。掩码的二进制字符串前缀为网络号,都由‘1’组成;后缀为主机号,都由'0'组成 方法一: 按照题目的思路求解。第一步是判断ip地址和掩码的格式是否合法,由题意可知,掩码与IP每一段在 0 - 255 之间,如果有字段小于0或者大于255则直接判为格式非法;若字段都在 0 - 255 之间,判断掩码是否前缀为1,后缀为0,根据归纳推理发现,若0<mask[i]<255,则第i段已经包含...
牛客157674011号:
第一个方法,如果子网掩码是11111111.11111111.11101111.00000000这种在其中一段里0在1前面的情况是不是检测不出来啊
0
点赞
评论
收藏
分享
2021-10-25 10:17
已编辑
复旦大学 C++
题解 | #字符串加密#
题目的主要信息: 输入两串字符,第一个单词作为密匙,去除单词中的重复字符,再用字母表中剩余的字母填充完整。 在对字符串进行加密时,用密钥中的字母一一取代原文的字母,需要保留字母的大小写状态。 方法一: 我们可以根据题意进行计算求解。用一个vector保存密钥,对遍历一遍输入的单词,将所有字母转换为小写字母,不保留重复的字符,然后在vector中加入26个字母中剩余的其他字母,这样就完成了密钥。需要注意的是,上面获得的密钥全部是小写字母。对字符串加密的时候,判断当前字母s[i]是大写还是小写,如果是小写字母,则直接通过ASCII码计算相对位置s[i]-'a',获得密钥中对应的字母;如果是大写...
0
点赞
评论
收藏
分享
2021-10-24 23:41
复旦大学 C++
题解 | #求小球落地5次后所经历的路程和第5次反弹的高度#
题目的主要信息: 有一个小球从高度h下落,碰到地板会反弹,反弹高度为下落高度的一半 求解第五次落地所经历的路程和第五次反弹的高度 方法一:模拟下落 首先我们来看小球从h高度下落的过程: 用height_5记录每次弹起的高度,height_total记录总路程,用一个for循环模拟弹起又落地的过程,每次的反弹结束后反弹高度height_5都变为原来的一半,经历的路程height_total需要加上两个反弹高度。由于第五次落地的时候只经历四次反弹,因此for只需要四次就可以计算第五次落地的时候小球经历的路程,最后我们还要输出第五次反弹的高度,即第四次反弹高度除以2。 具体做法: #inclu...
0
点赞
评论
收藏
分享
2021-10-24 22:40
复旦大学 C++
题解 | #统计字符#
题目的主要信息: 统计一行字符中英文字母、空格、数字、其他符号的个数 需要注意的是,可能会有多行输入 方法一:ASCII码统计 根据ASCII码表可知,每一个字符都有编码,并且ASCII码的编号是连续的,同时,c++在比较两个字符的时候是根据ASCII码比较的,因此我们可以根据ASCII码对字符进行判断是数字、英文还是空格,剩下的就是其他字符。由于题目告诉我们会有多个输入,每个输入就是一行字符,因此我们用一个while循环来读取输入,对每一行进行统计的时候需要将统计变量清零。 具体做法: #include<iostream> #include<string> u...
0
点赞
评论
收藏
分享
1
3
4
5
6
7
8
关注他的用户也关注了:
牛客网
牛客企业服务