#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. torch 入门

    torch 入门1.安装环境我的环境mac book pro 集成显卡 Intel Iris不能用 cunn 模块,因为显卡不支持 CUDA2.安装步骤: 官方文档 (1).git clone htt ...

  2. 将json返回的日期格式转换

    <script>         function ChangeDateFormat(cellval) {             var date = new Date(parseInt ...

  3. Aptana 中去掉“Missing semicolon”提醒

    打开“窗口”下的“首选项” 然后找到“Aptana Studio”,在其下找到并点击Validation,在右侧窗口找到Javascript Syntax Validator,在下方的Options中 ...

  4. Redis Windows下安装部署

    下载Redis 在Redis的官网下载页上有各种各样的版本,我这次是在windows上部署的,要去GitHub上下载.我下载的是2.8.12版的,相信大家百度一下就可以搜到,这就是我们需要的: 启动R ...

  5. iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用

    一.CALayer简介 1.CALayer在iOS中,文本输入框.一个图标等等,这些都是UIView你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个其实UIView之所以 ...

  6. 热更新脚本C#light,ulua,Scorpio性能比较

    http://www.unity蛮牛.com/thread-32861-1-1.html 测试环境: unity4.5.2  三个脚本全是源码导入  PC :处理器 Intel(R) Core(TM) ...

  7. python trackback的使用心得

    以前在读代码的时候总是要花很久时间去找在哪里调用的某个函数,现在好了,直接使用:trackback.print_stack()就可以打印出调用栈了,在那个地方调用的一目了然... 而如果是异常栈的话就 ...

  8. [原创]使用java批量修改文件编码(ANSI-->UTF-8)

    从网上下载的项目,有时候.java文件的编码是ANSI.导入到自己的MyEclipse后,查看项目源码的时候,总是乱码. 一个个.java去修改的话, 既麻烦又不现实.所以写了下面这个工具类,进行批量 ...

  9. Java工程为什么要加一个biz层

    biz是Business的缩写,实际上就是控制层(业务逻辑层).解释:控制层的主要作用就是协调model层和view层直接的调用和转换.能够有效的避免请求直接进行数据库内容调用,而忽略了逻辑处理的部分 ...

  10. Unable to add window -- token null is not for an application

    导致报这个错是在于new AlertDialog.Builder(mcontext),虽然这里的参数是AlertDialog.Builder(Context context)但我们不能使用getApp ...