9.14小红书上机编程题

  1. 小红圈的数量

给你一个二维矩阵,代表每个用户之间的关系,若彼此都为1,说明是在互相关注,互相关注的成为“朋友”,且朋友具有传递性。朋友之间形成1个小红圈。求小红圈的数量
输入:
N+1行,第1行为N,代表有N个用户
之后的N行是矩阵的数据,代表各个用户之间的关系
输出:
小红圈的数量

我的思路:
使用并查集,把朋友合并。
最后数一数多少个独立的集合就可以了

2.笔记草稿
给你一组字符串,由英文和(),<构成,()圈起来的部分是注释,不会输出,‘<’是删除,会把有效输出删除,()保证成对出现,<不会影响到括号,求有效输出

输入:
一行字符串,例如a<<b(a(<))
输出:
最终的有效字符 b
解释:
a被删除,
b输出
a(<)被一个括号注释掉了

思路:
把问题拆分成2部分:
有效输出部分
栈部分(用来记录括号,判断是否在注释状态)

栈部分:
利用栈去判断是否处于注释状态,注释状态下直接舍弃输入数据,直到遇到‘)’,来更新栈的状态,另外要注意一下遇到新的‘(’还需要入栈)
有效输出部分:
1.先判断是否处于注释状态,是的话就检测“()”来判断何时退出
2.不处于注释状态的话就判断删除操作“<”,注意删除的前提是有元素可以删
3.不处于注释状态,也不是删除符,那么直接放入有效输出部分

3.笔记精选
题目:
给你n篇笔记的点赞数,要求每篇笔记的编号不能连续,请选出总赞数最多的笔记集合,输出做多的总赞数和选中的笔记数量,若有多种选择方案,输出笔记数量最少的那种方案

输入:
一行数据,代表每篇笔记的赞数,例如 1 2 3 1
输出
一行数据,2个数字,1个代表总赞数,1个代表笔记数,例如 4 2

思路:
动态规划

解题方法:
memo[n]代表从[0..n]中去选择,可以选出的最高总赞数
memo[n]的求取:
1.要么选择当前笔记el(n)+memo[n-2];
2.要么不选memo[n-1];
3.二者取最大值
以上可以求出最高总赞数

接下来去求选择的笔记数
利用回溯法
因为memo数组已求了出来,接下来就去比对一下,
因为memo【n】要么是根据el(n)+memo【n-2】求来的
要么是根据memo【n-1】求来的。所以就可以倒着推回去

退出条件:
若n<0,(实际不会出现这种情况)直接返回
若n==0,那么num++,返回;(因为0之前没数了,既然推到了0,那么一定会选择0)

递归条件:
先if判断一下,能否递归memo【n-1】,因为这样选的文章数少;
若不能递归n-1,就num++代表选中了当前文章,然后去递归memo【n-2】,注意此时赞数ret要减去el(n);

4.倒卖战利品

题目:
有一组N个宝物,宝物有2个属性
稀有性X,实用性H
卖给小贩,但小贩很贪心,一旦卖给他一个宝物后,下一个宝物的稀有性和实用性都不能低于上一个宝物,否则小贩就不收了
求最多能卖给小贩多少个宝物

输入:
N
X1 H1
...
输出:
个数

思路:
贪心算法

先排序
然后计算

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. file n. 文件;v. 保存文件2. command n. 命令指令3. use v. 使用用途4. p...
    喵呜Yuri阅读 4,119评论 0 4
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,129评论 0 2
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 10,024评论 0 5
  • 1.这里有基本的类继承,属性和方法访问控制权限测试.2.protected 这个属性不能在类的外部访问.这个需要注...
    司马捷阅读 4,693评论 0 1
  • 感恩老公姐姐下雨天陪我逛街买衣服,大宝二宝必须要买的,我也顺带买了三件自己喜欢的,正好现在穿,给自己买到合适的衣服...
    米朵天天阅读 1,679评论 0 0

友情链接更多精彩内容