数独检测器:帝国理工C++作业
#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++作业的更多相关文章
- 2048控制台程序:一份帝国理工C++作业
#include <fstream> #include <vector> #include <iostream> #include <string> u ...
- Java这些冷知识你知道吗?
1)jvm有很多种,其实jvm是一个标准,sun做的那个叫hotspot,作者就是后来v8的作者lars bak,其他公司也做过jvm,其中做得比较好的有bea的jrockit,其他的包括ibm的r9 ...
- KinectFusion解析
三维重建是指获取真实物体的三维外观形貌,并建立可复用模型的一种技术.它是当下计算机视觉的一个研究热点,主要有三方面的用途:1)相比于二维图像,可以获取更全面的几何信息:2)在VR/AR中,建立真实 ...
- [paper]MaskFusion: Real-Time Recognition, Tracking and Reconstruction of Multiple Moving Objects
Before 近期在调研关于RGBD在室内移动机器人下的语义导航的研究.目前帝国理工的Andrew Davison在这边有两个团队在研究,分别是Fusion++ 和 这篇 MaskFusion.这篇是 ...
- 上采样和PixelShuffle(转)
有些地方还没看懂, mark一下 文章来源: https://blog.csdn.net/g11d111/article/details/82855946 去年曾经使用过FCN(全卷积神经网络)及其派 ...
- flask框架(二):简单的登录demo
一:main.py # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/3 22:58 from flask import ...
- 83 项开源视觉 SLAM 方案够你用了吗?
作者:吴艳敏 来源:83 项开源视觉 SLAM 方案够你用了吗? 前言 1. 本文由知乎作者小吴同学同步发布于https://zhuanlan.zhihu.com/p/115599978/并持续更新. ...
- CEO的行为风格会影响公司业绩吗?
中国的两大互联网巨头--腾讯和阿里,创始人的风格非常不同.在公众面前,马云的形象是高谈阔论,而马化腾则显得较为低调.在公司管理上,马云不插手具体事务,而是站在高处务虚,抓战略.抓文化,而马化腾则是腾讯 ...
- MindSpore:自动微分
MindSpore:自动微分 作为一款「全场景 AI 框架」,MindSpore 是人工智能解决方案的重要组成部分,与 TensorFlow.PyTorch.PaddlePaddle 等流行深度学习框 ...
随机推荐
- html 常用标签补充
<body> <!--预处理标签 <pre>--> <pre> 你好, 空格 换3行. 你<sup>上标</sup>好<s ...
- STM32F10xx CAN BUS相关库文件"stm32f10x_can.c"内的库函数解析
一.背景: 还是继续CAN通信,要节省开发时间,使用库函数可大大降低开发周期,并且还能确保寄存器的配置几 乎是万无一失,所以,在此就STM32F10xx的CAN操作库函数的使用做个简析. STM32有 ...
- 【C语言入门教程】2.2 常量 与 变量
2.2 常量 与 变量 顾名思义,常量是运算中不能改变数值的数据类型,变量是可改变数值的数据类型.根据需要,可将一些在程序中不必改变数值的类型定义为常量,这样也可避免因修改数值造成程序错误.任何改变常 ...
- 避免在WHERE条件中,在索引列上进行计算或使用函数,因为这将导致索引不被使用
点击(此处)折叠或打开 --在sal列上创建非唯一索引 scott@TESTDB11>create index idx_emp1_sal on emp1(sal); Index created. ...
- maven之window安装
1.下载:apache-maven-3.3.9-bin.zip 2.解压下载的maven文件到任意指定文件夹 3.配置maven 右键“我的电脑” -> "属性" 在打开的属 ...
- Ehcache与Guava Cache的区别浅谈
最近在做一些缓存改造的场景,有如下一些经验总结: 缓存版本: Ehcache:2.8.3 Guava:17.0 Ehcache支持持久化到本地磁盘,Guava不可以: Ehcache有现成的集群解决方 ...
- css3 github javascript
欢迎关注我的 github github博客地址 github地址
- Effective Java 读书笔记之八 异常
一.只针对异常的情况才使用异常 1.类具有状态相关的方法时,可采用状态测试方法和可识别的返回值两个策略. 二.对可恢复的情况使用受检异常,对编程错误使用运行时异常 1.期望调用者能够适当恢复的情况,应 ...
- leetcode 278. First Bad Version
You are a product manager and currently leading a team to develop a new product. Unfortunately, the ...
- HDU 1069 dp最长递增子序列
B - Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...