面试题-华为(16年)-数独-7
来源:互联网 发布:保健品网络推广策划 编辑:程序博客网 时间:2024/06/05 02:09
这是从牛客网上扒下来的面试题,题目有点难,我没有做出来,下面的答案是从参考答案里扒下来的,等以后有时间再慢慢看(希望以后会有时间,哈哈)。
问题描述
数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。
参考代码
#include <iostream>#include <vector>#include <fstream>using namespace std;void print_sudoku(vector<vector<int> > &matrix){ ofstream fout("text.txt",ofstream::app); for(int i=0;i<9;++i){ for(int j= 0;j<9;++j){ fout<<matrix[i][j]; if(j!=8) fout<<" "; } fout<<endl; } fout<<"***************************"<<endl;}void fill_sudoku(vector<vector<int> > &matrix,vector<pair<int,int> > &blank,int n){ if(n==blank.size()){ print_sudoku(matrix);//print all the possibilities return; } vector<bool> flags(9,false); int x=blank[n].first,y=blank[n].second; for(int i=0;i<9;++i){//row and column renouncement if(matrix[x][i]!=0) flags[matrix[x][i]-1]=true; if(matrix[i][y]!=0) flags[matrix[i][y]-1]=true; } int a[9][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1},{0,0}}; int m=x/3,k=y/3; m=m*3+1;k=k*3+1; for(int i=0;i<9;++i){//square renouncement int temp=matrix[m+a[i][0]][k+a[i][1]]; if(temp!=0) flags[temp-1]=true; } for(int i=1;i<=9;++i){ if(!flags[i-1]){ matrix[x][y]=i;//test each of the candidates fill_sudoku(matrix,blank,n+1);//iteration matrix[x][y]=0; } }}int main(){ vector<vector<int> > matrix(9,vector<int>(9)); vector<pair<int,int> > blank; for(int i=0;i<9;++i) for(int j=0;j<9;++j){ cin>>matrix[i][j]; if(matrix[i][j]==0) blank.push_back(make_pair(i,j)); } fill_sudoku(matrix,blank,0); return 0;}
0 0
- 面试题-华为(16年)-数独-7
- 面试题-华为(16年)-约瑟夫环:每隔两个数删掉一个数...-4
- 【华为】数独
- 华为,数独
- [各种面试题] 检查数独是否正确
- 华为机试---数独
- 华为Oj----Sudoku(数独)
- 牛客网---2016---华为数独
- 华为04年面试题
- 面试题-华为(16年)-字符集合去重-5
- 华为java华为面试题
- 应聘华为 16道经典面试题
- 华为16道经典面试题
- 华为编程大赛中的“数独”问题
- 华为OJ(数独游戏-Sudoku)
- 华为面试题
- 华为面试题(转载)
- 华为一道面试题
- “/usr/bin/ld: cannot find -lopenblas” error in Caffe compilation
- 26. Remove Duplicates from Sorted Array and 80. Remove Duplicates from Sorted Array II
- JAVA学习笔记0004
- perl 多线程
- linux addr2line
- 面试题-华为(16年)-数独-7
- POJ 1651 Multiplication Puzzle(区间DP)
- Welcome
- opencv学习_5 (IplImage的结构)
- 解决php提示Notice
- 设置td中的值自动换行
- 使用Realm进行数据操作(二)
- 5-2 单词长度 (15分)
- 欧里几德及扩展欧里几德算法