#include <fstream>
#include <vector>
#include <iostream>
#include <string>
using namespace std; bool check_sudoku(const vector<int>& input);
int coordtoidx(int row, int col);
void extract_row(const vector<int>& input, int row, vector<int>& output);
void extract_col(const vector<int>& input, int col, vector<int>& output);
void extract_subsquare(const vector<int>& input, int row, int col, vector<int>& output);
bool once(int num,const vector<int>& input); int main()
{
ifstream infile;
cout<<"Please input a input file name"<<endl;
string infilename;
cin>>infilename;
infile.open(infilename);
if (!infile.is_open())
{
cout<<"could not open input file"<<endl;
system("pause");
exit(EXIT_FAILURE);
} vector<int> input;
int number;
while (infile>>number)
{
input.push_back(number);
}
infile.close(); bool isOK=check_sudoku(input);
if (isOK)
{
cout<<"valid"<<endl;
}
else
{
cout<<"invalid"<<endl;
} system("pause");
return ;
} bool check_sudoku(const vector<int>& input)
{
for (int i=; i<; i++)
{
vector<int> rowNumbers;
extract_row(input,i,rowNumbers);
for (int m=;m<;m++)
{
bool onceFlag=once(m,rowNumbers);
if(!onceFlag)
{
return false;
}
}
}
for (int j=; j<; j++)
{
vector<int> colNumbers;
extract_col(input,j,colNumbers);
for (int m=;m<;m++)
{
bool onceFlag=once(m,colNumbers);
if(!onceFlag)
{
return false;
}
}
}
for (int p=; p<; p=p+)
for (int q=; q<; q=q+)
{
vector<int> subsquareNumbers;
extract_subsquare(input,p,q,subsquareNumbers);
for (int m=;m<;m++)
{
bool onceFlag=once(m,subsquareNumbers);
if(!onceFlag)
{
return false;
}
}
}
return true;
} int coordtoidx(int row, int col)
{
return row*+col;
} void extract_row(const vector<int>& input, int row, vector<int>& output)
{
for (int c=; c<;c++)
{
int idx=coordtoidx(row,c);
output.push_back(input.at(idx));
}
} void extract_col(const vector<int>& input, int col, vector<int>& output)
{
for (int r=; r<;r++)
{
int idx=coordtoidx(r,col);
output.push_back(input.at(idx));
}
} void extract_subsquare(const vector<int>& input, int row, int col, vector<int>& output)
{
for (int r=row; r<row+;r++)
for (int c=col; c<col+;c++)
{
int idx=coordtoidx(r,c);
output.push_back(input.at(idx));
}
} bool once(int num, const vector<int>& input)
{
int count=;
for (unsigned int i=; i<input.size(); i++)
{
if (input.at(i)==num)
{
count++;
}
}
return count==?true:false;
}

数独检测器:帝国理工C++作业的更多相关文章

  1. 2048控制台程序:一份帝国理工C++作业

    #include <fstream> #include <vector> #include <iostream> #include <string> u ...

  2. Java这些冷知识你知道吗?

    1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9 ...

  3. KinectFusion解析

      三维重建是指获取真实物体的三维外观形貌,并建立可复用模型的一种技术.它是当下计算机视觉的一个研究热点,主要有三方面的用途:1)相比于二维图像,可以获取更全面的几何信息:2)在VR/AR中,建立真实 ...

  4. [paper]MaskFusion: Real-Time Recognition, Tracking and Reconstruction of Multiple Moving Objects

    Before 近期在调研关于RGBD在室内移动机器人下的语义导航的研究.目前帝国理工的Andrew Davison在这边有两个团队在研究,分别是Fusion++ 和 这篇 MaskFusion.这篇是 ...

  5. 上采样和PixelShuffle(转)

    有些地方还没看懂, mark一下 文章来源: https://blog.csdn.net/g11d111/article/details/82855946 去年曾经使用过FCN(全卷积神经网络)及其派 ...

  6. flask框架(二):简单的登录demo

    一:main.py # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/3 22:58 from flask import ...

  7. 83 项开源视觉 SLAM 方案够你用了吗?

    作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...

  8. CEO的行为风格会影响公司业绩吗?

    中国的两大互联网巨头--腾讯和阿里,创始人的风格非常不同.在公众面前,马云的形象是高谈阔论,而马化腾则显得较为低调.在公司管理上,马云不插手具体事务,而是站在高处务虚,抓战略.抓文化,而马化腾则是腾讯 ...

  9. MindSpore:自动微分

    MindSpore:自动微分 作为一款「全场景 AI 框架」,MindSpore 是人工智能解决方案的重要组成部分,与 TensorFlow.PyTorch.PaddlePaddle 等流行深度学习框 ...

随机推荐

  1. PHP基础封装简单的MysqliHelper类

    MysqliHelper.class.php 1: <?php 2:  3: /** 4: * MysqliHelper 5: * [面向对象的MysqliHelper的简单封装] 6: */ ...

  2. UI第四节——UIImageView详解

    - (void)viewDidLoad { // super调用是必须的 [super viewDidLoad]; UIImage *image = [UIImage imageNamed:@&quo ...

  3. 在WordPress后台菜单系统中添加Home链接

    在wordpress后台如果想打开前台的话,要想先把鼠标移动到左上角菜单,然后在下拉菜单中点击“查看站点”,很是麻烦,能不能在 WordPress 后台菜单系统中添加 Home 链接呢? 将下面代码复 ...

  4. eclipse工具背景色模板-程序员保护好自己的眼睛

    做为coder,要保护好自己的眼睛,eclipse 强烈推荐 Eclipse Color Theme插件,该插件包含多种当前流行的主题选择. 安装方法: 安装方法:1.先安装一个Eclipse Col ...

  5. ajax访问 aspx.cs后台

    --前台$.ajax({ type: "POST", contentType: "application/json", url: "WebForm2. ...

  6. Android 网络请求框架android-async-http问题

    今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...

  7. servlet部分知识总结

    1.解决中文显示乱码问题: 对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8"); ...

  8. Hashtable和HashMap的区别举例

    我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializable ...

  9. 八数码问题:C++广度搜索实现

    毕竟新手上路23333,有谬误还请指正. 课程设计遇到八数码问题(这也是一坨),也查过一些资料并不喜欢用类函数写感觉这样规模小些的问题没有必要,一开始用深度搜索却发现深搜会陷入无底洞,如果设定了深度限 ...

  10. 转:jQuery弹出二级菜单

    <html> <head> <meta http-equiv="content-type" content="text/html; char ...