网易互娱23届实习笔试_3x3锯齿数独
一、输入:
输入一个3x3数独,字符'.'代表空
输入三个宫的域,每个宫包括三个位置,[0,0]表示0行0列
二、输出要求:
1.每个宫里最终123各出现一次,
2.数独中的行列里不出现重复字符;
输出满足条件的解
思想:先根据输入找到所有行列不重复的数独,再判断三个宫是否满足不重复;
1 #include <iostream>
2 #include <bits/stdc++.h>
3 using namespace std;
4 int a[3][3];//存储三个宫区域
5 int cnt;//记录满足的个数
6 bool isValid(int row, int col, char val, vector<vector<char>>& board) {
7 for (int i = 0; i < 3; i++) { // 判断行里是否重复
8 if (board[row][i] == val) {
9 return false;
10 }
11 }
12 for (int j = 0; j < 3; j++) { // 判断列里是否重复
13 if (board[j][col] == val) {
14 return false;
15 }
16 }
17 return true;
18 }
19 bool func(vector<vector<char>> board){
20 for (int i = 0; i<3;i++){ //第i个宫
21 int vec[3];
22 memset(vec,0,sizeof(vec));
23 for (int j = 0; j < 3;j++){
24 if (vec[board[a[i][j]/3][a[i][j]%3]-'1']==1){
25 return false;
26 cout <<"失败"<< a[i][j] << endl;
27 }
28 vec[board[a[i][j] / 3][a[i][j] % 3]-'1'] = 1;
29 }
30 }
31 return true;
32 }
33
34 bool backtracking(vector<vector<char>>& board) {
35 int x, y;
36 for (int i = 0; i < board.size(); i++) { // 遍历行
37 for (int j = 0; j < board[0].size(); j++) { // 遍历列
38 x = i;
39 y = j;
40 if (board[i][j] != '.') continue;
41 for (char k = '1'; k <= '3'; k++) { // (i, j) 这个位置放k是否合适
42 if (isValid(i, j, k, board)) {
43 board[i][j] = k; // 放置k
44 if (backtracking(board)) {
45 return true; // 如果找到合2 适一组立刻返回
46 }
47 board[i][j] = '.'; // 回溯,撤销k
48 }
49 }
50 return false; // 9个数都试完了,都不行,那么就返回false
51 }
52 }
53 if(x==2&&y==2){ //判断是否满足宫
54 if(func(board)){
55 cout << "cnt++:" << endl;
56 cnt++;
57 for(int i=0;i<3;i++){
58 for(int j=0;j<3;j++){
59 cout<<board[i][j]<<" ";
60 }
61 cout << endl;
62 }
63 }
64 /*for(int i=0;i<3;i++){
65 for(int j=0;j<3;j++){
66 cout<<board[i][j]<<" ";
67 }
68 cout << endl;
69 }*/
70 }
71 return false;
72 //return true; // 遍历完没有返回false,说明找到了合适棋盘位置了
73 }
74
75 int main() {
76 cnt = 0;
77 vector<vector<char>>board={{0,0,0},{0,0,0},{0,0,0}};
78 for(int i=0;i<3;i++){
79 for(int j=0;j<3;j++){
80 char ch;
81 cin>>ch;
82 board[i][j]=ch;
83 //cout<<ch<<endl;
84 }
85 }
86 int x, y;
87 for (int i = 0; i < 3;i++){
88 for (int j = 0; j < 3;j++){
89 cin >> x >> y;
90 a[i][j] = 3 * x + y;
91 //cout << 3 * x + y;
92 }
93 }
94 cout << endl;
95 cout << "x" << endl;
96 backtracking(board);
97 int coun = cnt;
98 cout << "answer " << cnt << endl;
99 return 0;
100 }
测例1:
输入
..3 ... ...
0 0 1 0 1 1
0 1 0 2 1 2
2 0 2 1 2 2
输出:
cnt++:
1 2 3
2 3 1
3 1 2
cnt++:
2 1 3
1 3 2
3 2 1
answer 2
网易互娱23届实习笔试_3x3锯齿数独的更多相关文章
- 网易互娱2017实习生招聘游戏研发工程师在线笔试第二场 C
偶尔碰到这题,简单数位DP题,然而我已生疏了…… 这次算是重新想到的,看来对DP的理解有增进了…… dp[i][j][k],表示前i为,mod为j,是否出现2.3.5的剩下的数位可组成的数字.答案就是 ...
- 2017 网易游戏互娱游戏研发4.21(offer)
网易游戏互娱(offer) 去年这个时候就参加过网易游戏的实习生招聘,到今年总共收到了4次拒信.不过这次运气好,终于get了最想要的offer.去年实习生互娱笔试挂,秋招笔试挂,今年春招互娱投了连笔试 ...
- 人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经
转自:http://www.itmian4.com/forum.php?mod=viewthread&tid=3985 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Of ...
- 最新 三七互娱java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.三七互娱等10家互联网公司的校招Offer,因为某些自身原因最终选择了三七互娱.6.7月主要是做系统复习.项目复盘.Leet ...
- 2019 三七互娱java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.三七互娱等公司offer,岗位是Java后端开发,因为发展原因最终选择去了三七互娱,入职一年时间了,也成为了面 ...
- 网易实习笔试真题C/C++
刚做的时候根本就没有想到解题思路,刚好看到了别人的思路,自己写了一下.里面对unordered_map及vector二维数组的建立很灵活,另外区别了一下map,unordered_map,hash_m ...
- 2018春招实习笔试面试总结(PHP)
博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结. 首先就是关于投递计划,博主自己整理了一份各大公司的春招信息,包括网申地址,开始时间,结束时间,以及自 ...
- hihocoder 网易游戏2016实习生招聘在线笔试 解题报告
比赛笔试链接:http://hihocoder.com/contest/ntest2015april/problems 题目就不贴了. 1.推箱子. 思路:纯模拟. 代码(28MS): #includ ...
- 网易2019校招C++研发工程师笔试编程题
丰收? (忘了题目了QAQ) 题目描述: 又到了丰收的季节,恰逢小易去牛牛的果园里游玩. 牛午常说他对整个果园的每个地方都了如指掌,小易不太相信, 所以他想考考牛牛. 在果园里有N堆苹果,每堆苹果的数 ...
随机推荐
- FileInputStream 类与 FileReader 类的区别
FileInputStream 类与 FileReader 类的区别: 两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,它们到底有何区别呢? FileIn ...
- Ansible之playbook剧本
Ansible之playbook剧本 目录 Ansible之playbook剧本 1. playbook的组成 2. 剧本示例test1 2.1 剧本制作 2.2 准备http.conf 2.3 运行 ...
- 泛型、Junit
一. 泛型 1.泛型的好处 **1)编译时,检查添加元素的类型,提高了安全2)减少了类西较换的次数,提高效率 不使用泛型Dog -> Object -> Dog //放入到ArrayLis ...
- 虫师Selenium2+Python_11、自动化测试项目实战
P276 11.1.3 自动化测试用例编写原则 在编写自动化测试用例过程中应该遵循以下原则: 1.一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器: 2.一个用例只能验证一个功能点,不要 ...
- 基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台
1.板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含双片TI DSP TMS320C6678芯片:一片Xilinx公司FPGA XC7K420T-1FFG1156 芯片:六个千兆网口( ...
- Solution -「WC 2022」秃子酋长
\(\mathscr{Description}\) Link. (It's empty temporarily.) 给定排列 \(\{a_n\}\),\(q\) 次询问,每次给出 \([l,r ...
- php使用CURL进行模拟登录采集数据
<?php $cookie_path = './'; //设置cookie保存路径 //-----登录要提交的表单数据--------------- $vars['username'] = '张 ...
- MXNet源码分析 | KVStore进程间通信
本文主要基于MXNet1.6.0版本进行分析. 在上一篇文章中,我们分析了MXNet中KVStore的进程内通信机制.在这篇文章中,我们主要分析KVStore如何进行多节点分布式通信. 在KVStor ...
- kafka3.x原理详解看这篇就够了
一.概述 (一).kafka的定义 1.定义 1)kafka传统的定义:kafka是一个分布式的基于发布/订阅模式的消息队列,主要用于大数据实时处理领域 2)kafka最新的定义:kafka是一个开源 ...
- vue methods中的函数调用时带括号与不带括号的区别
@click='getList(id)',但是为什么有时候明明没有传参的需要,却要加上()呢? 百思不得其解,于是去查阅了相关的资料,意思就是,当不加括号直接调用这个函数是可以直接获取到这个事件对象的 ...