题面来自于某nb网友

简单题意

给定3∗33*33∗3的数独,给你固定的区域划分,除了满足基础数独还有满足区域划分的答案。
基础数独就是同行同列都是不同的数,这里的区域就是将3∗33*33∗3的数独划分成三个区域,要求这三个区域内的数也不同。

简单思路

每个位置可以为123三种情况,3的9次方是19683,也就是最多有不到2万种情况,可以枚举所有情况进行判断,考虑到只有十组数据,可以直接随机,减少代码量。
ps剪支小技巧:当有两种情况满足时直接剪枝返回,加快速度。

输入输出描述和样例

t组测试,每组测试包含两部分,第一部分是3∗33*33∗3的数独矩阵只包含111 222 333和∗*∗,第二部分是三行,每行六个数表示一个区域的三个位置。
输出的话如果答案有多种输出MultipleMultipleMultiple,如果只有一种答案输出UniqueUniqueUnique之后把答案填充的数独输出,如果不存在答案输出NoNoNo。

输入
4
*2*
1*2
***
0 0 0 1 1 0
0 2 1 1 1 2
2 0 2 1 2 2
**3
***
***
0 0 1 0 1 1
0 1 0 2 1 2
2 0 2 1 2 2
**3
1**
**2
0 0 1 0 1 1
0 1 0 2 1 2
2 0 2 1 2 2
3*3
1**
**2
0 0 1 0 1 1
0 1 0 2 1 2
2 0 2 1 2 2输出
Unique
321
132
213
Multiple
No
No

参考代码(我认为比较短)


#include <iostream>
#include <set>
using namespace std;const int N = 10;
char s[N][N];
char s2[N][N];int mp[N][N];void cp()
{for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)s2[i][j] = s[i][j];
}
int rd(int l, int r)
{return rand() % (r - l + 1) + l;
}bool check()
{for (int i = 1; i <= 3; i++)for (int j1 = 1; j1 <= 3; j1++)for (int j2 = j1 + 1; j2 <= 3; j2++)if (s2[i][j1] == s2[i][j2])return 0;for (int i = 1; i <= 3; i++)for (int j1 = 1; j1 <= 3; j1++)for (int j2 = j1 + 1; j2 <= 3; j2++)if (s2[j1][i] == s2[j2][i])return 0;for (int i = 1; i <= 3; i++){if (s2[mp[i][1]][mp[i][2]] == s2[mp[i][3]][mp[i][4]])return 0;if (s2[mp[i][1]][mp[i][2]] == s2[mp[i][5]][mp[i][6]])return 0;if (s2[mp[i][3]][mp[i][4]] == s2[mp[i][5]][mp[i][6]])return 0;}return 1;
}
void solve()
{for (int i = 1; i <= 3; i++)cin >> s[i] + 1;int num = 0;for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)num += s[i][j] == '*';for (int i = 1; i <= 3; i++)for (int j = 1; j <= 6; j++){cin >> mp[i][j];mp[i][j]++;}int cnt = 2e6;set<string> st;while (cnt--){cp();string res = "";for (int i = 1; i <= num; i++)res += '0' + rd(1, 3);int idx = 0;for (int i = 1; i <= 3; i++)for (int j = 1; j <= 3; j++)if (s2[i][j] == '*')s2[i][j] = res[idx++];if (check())st.insert(res);if (st.size() >= 2){puts("Multiple");return;}}if (st.size() == 0){puts("No");return;}puts("Unique");string res = *st.begin();cp();int idx = 0;for (int i = 1; i <= 3; i++){for (int j = 1; j <= 3; j++)cout << (s2[i][j] == '*' ? res[idx++] : s2[i][j]);cout << endl;}
}
int main()
{srand(time(NULL));int t;cin >> t;while (t--)solve();return 0;
}
结束语

网易互娱雷火历来笔试题都是偏模拟,代码量会比较大,比如八数码,文本编辑器这种模拟题都会有,只能说是太卷了,愿天堂没有内卷。!!!!!

2022 3.17网易互娱研发岗笔试题锯齿数独题解相关推荐

  1. 2018网易互娱秋招笔试题

    1. 计算税 import java.util.Scanner;public class Main {public static void main(String[] args) throws Exc ...

  2. 网易互娱的一道笔试题

    题目描述:一张图被裁剪成N行M列,知道每张图片的编号,以及和它上下左右相邻的图片编号,将这张图拼接回去. 输入描述:N(空格)M 接下输入N*M行,每行5个数:第1个数是当前图片的编号,第2个数是当前 ...

  3. 网易互娱人工智能工程师笔试题

    考试的时候第二题调了好久一直是30%,时间复杂度太高,现在想想还是题目分析的不够透彻! 题目大意:有一个大整数,每三位分成一组:把每一组三位数转成二进制数,再连接所有二进制数:二进制数每五位分成一组, ...

  4. 网易互娱C++岗一面面经(凉面)

    前言 我报的网易互娱的提前批游戏研发工程师C++岗,这个过程其实挺坎坷的,8月初跟着导师去黑龙江佳木斯开会,中途忽然间接到通知要笔试,从会场逃出来在宾馆做的远程笔试题,做的不是特别好,4道题只做对了一 ...

  5. 网易2019游戏研发工程师笔试题

    第一题:计算个人所得税 #include <iostream> using namespace std; int main(){int t,n,result;float tmp;const ...

  6. 网易16年研发实习生笔试题 - 寻找第K大

    ### 问题 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数. 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在. 输入样例 [1,3, ...

  7. 2022暑期实习网易互娱游戏研发

    笔试三题,150分钟 足球比赛,多属性排序 六个位置,每个位置一堆选项,选择暴击率大于等于100且伤害值最高的排列,dfs 迷宫,一次最多K步,M位不停留,W位是障碍,求最少回合数 一面 手撕代码(多 ...

  8. 【2023春招】剑心互娱研发岗笔试题解

    目录 T1-消除匹配数组 题意 例1: 例2: 样例 AC_Code T2-进制数字和 题意

  9. 2016校招腾讯研发岗笔试题---递归法求解格雷码

    题目:一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码( Gray Code ).请编写一个函数,使用递归方法生成 N 位的格雷码. 测试输入输出如下 输入:1 输出:[ ...

最新文章

  1. mysql-5.5.25_Linux下安装Mysql-5.5.25
  2. 研发管理101军规#001 两周迭代,形成团队持续习惯
  3. 导入torchvision出现:AttributeError: module ‘torch.jit‘ has no attribute ‘unused‘错误
  4. 解析xml的问题未解决
  5. 了解※数据科学※(一)之数据的概念及一个数据科学项目的流程分析
  6. 揭秘鸿蒙生态背后的DevOps实践
  7. C++案例:C++版生命游戏
  8. Python基础笔记(二) List、tuple、循环语句
  9. C++11实现模板手柄:委托构造函数、defaultkeyword分析
  10. jgit - java实现git操作
  11. MBD | 多体动力学 绪论
  12. 【电子签章】HTML格式合同转化成PDF文件
  13. Ubuntu/Debian怎么在命令行开启远程桌面共享
  14. MaNGOS大芒果服务端源码研究(一)——环境安装与源码下载
  15. 使el-input失焦
  16. C语言冒泡法输出成绩与学号,C语言:根据成绩进行冒泡排序,学号也得跟着动,输出的结果...
  17. 网关 Gateway
  18. ArcGIS基础:全站仪或RTK采集的DAT文件生成点图形
  19. == 和 equal
  20. 2019.11.11

热门文章

  1. 1到100的偶数之和是多少_求1到100之间所有偶数之和
  2. 数据文件检验坏块的利器-dbv
  3. maven 中使用jdt编译代码
  4. 计算机网络显示空白,Win10以太网属性网络选项中显示为空白解决方法
  5. 基于Linux的socket网络编程项目——游侠手机商城
  6. 源码分析RocketMQ顺序消息消费实现原理
  7. 二叉树+链表+字符串+栈和队列高频面试题合集,已开源下载
  8. 归因分析:淘宝直播数据助理及其价值研究
  9. storyboard(故事版)新手教程 图文详解 2.为无约束的故事版添加约束
  10. 关于上下文映射看这篇就够了