不同的职位题目应该不一样,我遇到的2道题,其一是搜狗问答中的作弊判断,其二是矩阵计算。

1. 搜狗问答作弊判断

简单来说,就是存在作弊刷积分的情况,所以需要判断哪些人作弊,判断遵循下面2个原则:

(A) 两个人互问互答刷分,即A提的一个问题被B答了,B题的一个问题也被A答了,则这二人被判为作弊;

(B) 共同作弊刷分,即C提了一个问题,回答者有多位,其中包括已经被判为作弊的A和B,则C也被判为作弊。

嗯,大致就是这样,具体细节可能有出入。

输入类似于下面的,第一个数字为提问者id,后面的为回答者的id:

101 102
103 101 104 102
102 101
105 107 108

输出为作弊者数目和id,以上面那个输入为例:

3
101
102
103

其中101和102为互问互答作弊,而103属于共同作弊刷分。

这道题目前没有什么特别好的思路,似乎是要用到图的算法?总之先记录在这里,之后再寻找解决方案。

2. 矩阵计算

给出一个n行m列的矩阵A,定义x[i][j]为第i行和第j列中,除了A[i][j]这个位置以外的所有数的乘积(说白点就是选出第i行,抠掉第j个位置,选出第j列,抠掉第i个位置,然后把剩下的数相乘),求这个矩阵最大的x[i][j]。

输入全为非负数,第一行2个数是矩阵行数和列数,之后是矩阵本身(考题的例子忘了,于是随便写一个):

3 3
1 2 3
4 5 6
7 8 9

输出是一个数:

1008

嗯,一道很简单的题,个人思路是用2个数组pro_h[n]和pro_v[m],分别存下各行的乘积和各列的乘积,然后通过

x[i][j] = pro_h[i] * pro_v[j] / A[i][j] / A[i][j]

计算结果。在这里贴一下自己完整的c代码

#include <stdio.h>
#include <stdlib.h>int main(void)
{int n, m;scanf("%d%d", &n, &m);int total_num = n * m;int *mat = (int *)malloc(total_num * sizeof(int));/* read matrix */int i, j;for (i = 0; i < total_num; i++)scanf("%d", &mat[i]);/* calculate product for each row and each column */long *pro_h = (long *)malloc(n * sizeof(long));long *pro_v = (long *)malloc(m * sizeof(long));/* n rows */for (i = 0; i < n; i++) pro_h[i] = 1;for (i = 0; i < n; i++){int begin_index = i * m;for (j = 0; j < m; j++)pro_h[i] *= mat[begin_index + j];}/* m columns */for (j = 0; j < m; j++) pro_v[j] = 1;for (j = 0; j < m; j++){for (i = 0; i < n; i++)pro_v[j] *= mat[i * m + j];}/* calculate x[i][j] and find max value */long max_value = 0;for (i = 0; i < n; i++){int begin_index = i * m;for (j = 0; j < m; j++){int v_ij = mat[begin_index + j];long x_ij = pro_h[i] * pro_v[j] / v_ij / v_ij;if (max_value < x_ij)max_value = x_ij;}}free(mat);free(pro_h);free(pro_v);printf("%ld\n", max_value);return 0;
}

思路和实现都挺简单的,但做的时候稍微有点慌,于是循环中计算数组下标时把计算写错了,用一维数组替代二维数组计算时,第(i, j)个位置的下标是

index_ij = i * m + j

然而我全部写成了

index_ij = i * n + j

所以就只有方矩阵的计算是正确的,笔试时被提示只有20%的测试通过,当时百思不得其解,考完了仔细复查才发现这问题,一失足成千古恨…

总结:

搜狗在基础编程知识题全部是c++,因而没怎么写过c++的自己做起来比较吃力,以后得补补了;

数据结构的题,比起纯理论更侧重于应用,比如给出一定情景,让你选择适用的数据结构等,还是比较有趣的,相对来说比较简单;

research的题很难,虽然之前在百度实习时搞过机器学习,觉得对大部分常用算法多多少少应该都有了解,结果还是被各种没见过的名词打脸orz;

问答题是算法复杂度分析,搜索查找相关的,觉得这方面以后也有必要看看啊orz;

编程题老实说应该不算太难,但自己一方面经历不够,一方面又过度依赖Python,在被时间催促且没有熟知的语言的情况下,还是慌了,果然还是太嫩了啊……

每做一次笔试确实都会有不少收获,再接再厉吧。

搜狗2016年校招笔试编程题记录+总结相关推荐

  1. 魔法币 java_网易2018校招笔试编程题-魔法币 java实现

    魔法币 原题 小易准备去魔法王国采购魔法神器,购买魔法神器需要使用魔法币,但是小易现在一枚魔法币都没有,但是小易有两台魔法机器可以通过投入x(x可以为0)个魔法币产生更多的魔法币. 魔法机器1:如果投 ...

  2. 搜狗2016校园招聘之编程题解析-大数据开发

    搜狗2016校园招聘之编程题解析-大数据开发 解题思路: 使用JDK中的Point2D类,该类定义了坐标系空间中的一个点 Point2D是一个抽象类,但是在该类内部定义了静态的Double类,并且Do ...

  3. 华为2020校招笔试编程题 看这篇就够了(上)

    背景 近日一位在华为的师兄整理了一份内部的提纲给我们,想着以后肯定不会去华为,于是乎分享给大家,看看菊花厂今年的笔试题目是什么样子的. 编程题范围 这好像来自一个华为内部的文档,据说今年华为内部也在进 ...

  4. 奇安信2021年校招笔试编程题

    < 2020年9月12日奇安信笔试编程第一题 > <java实现获取数组中的连续子数组> 1. 题目信息 2. 参数要求 3. 解题思路 该题获取糖果可以分解为两个部分: (1 ...

  5. 网易2020校招笔试编程题回顾

    把今天的记忆里面的笔试题的情况梳理一下,投递的是算法工程师: 题型总共分为选择题10*1  编程题10.20.20.30  问答题5*2 编程题: 1.倒数排序:给你一个数n,以及1-n的一个排列,让 ...

  6. 2020秋招——XX校招笔试编程题:回文串

    回文串判断&打印给定字符串中的所有回文串 笔试时是纸质的,记错了indexOf()函数和charAt()函数,重大失误emmm,这样逻辑虽然都对了还是要gg,ww,反省中... 回文串:aba ...

  7. 美团2021校招笔试-编程题-第10场

    链接:淘汰分数_美团笔试题_牛客网 来源:牛客网 某比赛已经进入了淘汰赛阶段,已知共有n名选手参与了此阶段比赛,他们的得分分别是a_1,a_2-.a_n,小美作为比赛的裁判希望设定一个分数线m,使得所 ...

  8. 美团2021校招笔试-编程题(通用编程试题,第9场)

    第一题题目没看懂 团的蛋糕铺长期霸占着美团APP中"蛋糕奶茶"栏目的首位,因此总会吸引各路食客前来探店. 小团一天最多可以烤n个蛋糕,每个蛋糕有一个正整数的重量. 早上,糕点铺已经 ...

  9. 2018 完美世界校招笔试编程题(Java)

    01背包简单题,只不过要用Java写,写了比较久一点 import java.util.Scanner; public class Main {public static void main(Stri ...

最新文章

  1. LoadRunner的参数化功能分享
  2. Win64 驱动内核编程-10.突破WIN7的PatchGuard
  3. 去培训机构参加IT培训值不值
  4. SpringCloud(六) Hystrix入门
  5. hbase命令行演示
  6. 《NoSQL权威指南》导读
  7. pthread_attr_init线程属性
  8. C语言const易错点
  9. TensorFlow第九步CNN BP算法学习
  10. 安装Cocoapods,以及其中出现的问题
  11. 腾讯内部转岗_腾讯微博即将关停,网友:竟然还活着?
  12. 基于Python的心电信号检测与处理
  13. 保姆级教学:手把手教你如何分析研报!
  14. oracle.exe占用cpu太高,360tray.exe占用CPU过高,怎么办
  15. 使用java实现简单五子棋
  16. 测试不同体重体型软件样子的,hikaku-sitatter身高软件,一键测试自己的体型
  17. ARFoundation
  18. TVS管的参数理解与选型
  19. 未来可期(关于高考和现在处境的看法)
  20. animation动画几种效果

热门文章

  1. JS实现合并单元格的两种方法
  2. x264和x265编码技术的区别
  3. NetKeeper(创翼)开WIFI方法——2018.5
  4. 初始化一个java空数组_Java 数组的两种初始化方式
  5. 用windows系统下的DOS命令将腾讯视频客户端下载的qlv文件转换成MP4格式(图文详解)
  6. 从FASTA文件中批量提取指定序列【Python脚本】
  7. python生存曲线_生存曲线的估计方法(3):寿命表法
  8. 利用Python实现图片信息隐藏
  9. JavaScript高级(二)|函数进阶+正则表达式
  10. 仿抖音上下滑动列表播放短视频解决方案