网易互娱2021校招笔试真题
1、七星不靠
【题目描述】
七星不靠是中国麻将竞赛规则的番种,胡牌时由东南西北中发白7张,外加其他花色的147、258、369不相连的牌型,且没有将牌而组成。 ——百度百科
七星不靠中的七星是指:东西南北中发白,也就是牌中必须有这七张。而其它牌按下述的来拼全:
东西南北中发白+147万+258饼+369条
东西南北中发白+147万+258条+369饼
东西南北中发白+147条+258万+369饼
东西南北中发白+147条+258饼+369万
东西南北中发白+147饼+258条+369万
东西南北中发白+147饼+258万+369条
由于胡牌时只需要14张牌,而上述组合均有16张,那么除了东西南北中发白必须有外,其它三色可以随便去掉两张,都可以组成七星不靠。
我们的任务是,假设我们的14张牌中已经包含了东西南北中发白这7张牌,另外的牌都是万饼条的序数牌,给出另外的这7张牌,判断是否能组成七星不靠。
输入描述:
输入第一行为一个正整数T(T<=1000),表示有T组数据。
每组数据一行,包含7张牌,每张牌用”XY”表示,X为[1...9]的数字,Y为(“W”,”B”,”T”)中的一个,分别表示万,饼,条。有可能出现同样的"XY"但是数量不会超过4个。
保证数据一定合法。
输出描述:
对于每一组数据,输出YES或者NO,分别表示可以或者不可以组成七星不靠。
输入样例:
4
1T 4T 7T 2B 5B 8B 9W
1T 2T 3T 4T 5T 6T 7T
1B 2W 3T 4B 5W 6T 8W
2B 8B 5B 2B 6T 7W 4W
输出样例:
YES
NO
YES
NO
【解题思路】 处理下万饼条分别属于147,258,369的哪一类,再检查下类间是否互斥即可。 【参考代码】 #includeusing namespace std; int main() { int T; scanf("%d", &T); while(T--) { vectorv[3];//存放万饼条的数字 //输入 for(int i = 0; i < 7; i++) { char p[5]; scanf("%s", p); if(p[1] == 'T')v[0].push_back(p[0] - '0'); if(p[1] == 'B')v[1].push_back(p[0] - '0'); if(p[1] == 'W')v[2].push_back(p[0] - '0'); } int fl = 1; //特判缺门的情况 for(int i = 0; i < 3; i++)if(v[i].empty()) { puts("NO"); fl = 0; break; } if(!fl)continue; //排序 for(int i = 0; i < 3; i++)sort(v[i].begin(), v[i].end()); //判断万饼条内部是否满足隔3或者隔6的条件 for(int i = 0; i < 3; i++)for(int j = 1; i < v[i].size(); j++) { if(v[i][j] - v[i][j - 1] == 3 || v[i][j] - v[i][j - 1] == 6); else fl = 0; } //判断万饼条间元素对3取模是否互相独立 int cc[3] = {0}; for(int i = 0; i < 3; i++)cc[v[i][0] % 3]++; for(int i = 0; i < 3; i++)if(!cc[i])fl = 0; puts(fl ? "YES" : "NO"); } return 0; }
2、十字斩
【题目描述】
游戏工程师小明购买了VR设备之后爱上了体感游戏,而最近他把他的业余时间花在了一款叫十字斩的游戏里。当你戴上VR眼镜启动游戏后,先选择一首音乐,然后会发现有一个N*N的方阵呈现在你的眼前,方阵的每个格子上都有一个数字。然后伴随着音乐节拍,你需要按照时机对方阵进行一次十字斩击(同时斩掉一行和一列,而且选好了行列后不能斩到选定行列之外的格子)。斩击完了之后,矩阵会收缩成一个(N-1)*(N-1)的方阵。
特别的,若该次十字斩斩到的格子数字和是本次所有十字可能里最大的,则会获得一个Perfect,如果N次十字斩都是Perfect,则可以获得FullCombo的成就。但小明的心算能力不行,至今还未能获得FullCombo的成就。所幸初始数字方阵与音乐是一一对应的,所以小明可以通过预先计算十字斩的位置然后背下来,游玩的时候根据记忆去进行十字斩位置的选择即可。
小明上了一天班已经不想写代码了,所以他拜托你来写一个程序为他计算出十字斩的方案。
输入描述:
每个输入数据包含一个测试点。
第一行为一个正整数N,方阵的大小。0 < N <= 500
接下来N行,每行有N个数字,第i行第j个数字表示方阵i行j列上的数字是多少,对于每个数字,保证是非负整数且范围在[0, 65535]内。
输出描述:
输出行,每行两个整数,,第行的,表示第次斩击时,斩击第行和第列的数字和是最大的。注意
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
如果你问:“什么时候你才真正觉得接近了秋招?” 那一定是:“收到牛客绿皮书那一刻” 连续六年, 整合各大名企秋招考题 只为做到校招届的【五年高考三年模拟】 20家大厂授权,本次公开 200页笔面试真题解析合集 4大互联网热门岗位 保姆级攻略—你的求职绿卡!
