4.17 网易笔试 2h 4道编程题 100分, 1道问答题 10分(不记录总分,但会让面试官作为参考)

小红打O

输入:一个整数n,1<=n<=50

输出:4n行,每行出一个长度为4n的字符串

例子:

输入:1

输出:用*组成一个o的形状

.**.
*..*
*..*
.**.

输入:2

输出:

..****..
.******.
**....**
**....**
**....**
**....**
.******.
..****..

输入:3

输出:

...******...
..********..
.**********.
***......***
***......***
***......***
***......***
***......***
***......***
.**********.
..********..
...******...

思路:AC 100%

  1. 找规律,发现可以将4n行字符串,分为头部n行,中间2n行,以及尾部n行。
  2. 头部先初始化一个n行4n列由'*'组成的二维数组a1,然后根据第一行首尾n个变成'.',第二行首尾n-1个变成'.',以此类推循环,,修改头部的二维数组a1.
  3. 中间先初始化一个1行4n列由'.'组成的二维数组a2,然后首尾n个变成'*',修改a2
  4. 输出out=a1+2n*a2+a1.reverse(按行反转)
  5. 按照规定格式化输出

小红的数组构造

构造长度为n的正整数数组,满足以下条件1. 数组中的最大值<=k;2.数组中的每个数字都不同;3.sum(数组)=x。

1<=n<100000,1<=k<=x<=10e14

输入:n,k,x

输出:如果有解,输出任意解,n个正整数,空格隔开

如果无法构造输出 -1

思路:AC:64.29%

如果直接输出-1,AC:35.71%

  1. 列出几个无法构造的明显的条件,如,若n>k,无法构造,还有可能n,k,x之间的一些关系,然而没想明白,觉得可能是问题所在,导致搜索范围太大了,最后memary error
  2. python中iterstools库的combinations()函数可以获取所有k个数中选n个的数组组合,然后判断用sum()==x?

小红的图上删边

n个节点,m条边的无向连通图,每个节点的权值已知。删除一条边时,可获得连接该边的两个节点“权值乘积的末尾0数量的价值“,如50X60=300,价值为3。想知道保证图连通的情况下,最多可通过删边获得多少价值。

输入:

n,m 能够满足构成图的数量条件,2<=n<=100000

n个ai表示点的权重

m行,每行两个点,代表两点之间的连接(保证图俩农田那个,无重边,无自环)

输出:一个整数(删边获得的零的个数)

思路:None 没有联系过任何图的题目,完全没思路,随便print(10)结果通过了7.14%

小红的零

数组a定义一个区间的权值为区间内所有数的乘积末尾0的数量,求所有区间的权值之和

例子:

输入:

3
10 2 5

输出:

5
[1,1] 乘积是10 权值是1
[1,2] 乘积是20 权值是1
[1,3] 乘积是100 权值是2
[2,2] 乘积是4 权值是0
[2,3] 乘积是10 权值是1
[3,3] 乘积是25 权值是0
1+1+2+1=5

思路:暴力求解,AC忘记了,最后超时了。没想到别的什么可以降低复杂度的方法

问答题没有时间看了,这次考试开考一个小时左右后,牛客网出现了系统问题,无法自测运行和保存提交,导致无法及时验证答案,最后在半个多小时后才紧急修复,有点搞心态。不过后来发了邮件说明可以重考……

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务