POJ3435 Sudoku Checker【谜题+数独】
问题链接:POJ3435 Sudoku Checker。入门练习题,用C语言编写程序。
题意简述:输入n,然后输入(n×n)×(n×n)的二维数组,0表示可以是任意值,编写程序检查这些数据是否满足数独的初始状态。
问题分析:需要做的检查有:值范围检查,行、列和块的值重复检查。
程序说明:程序中编写函数getblock()用于将行和列的值转换为块的值。
AC的C语言程序如下:
/* POJ3435 Sudoku Checker */#include <stdio.h>
#include <memory.h>#define MAXN 10+1int row[MAXN * MAXN][MAXN * MAXN];
int col[MAXN * MAXN][MAXN * MAXN];
int block[MAXN * MAXN][MAXN * MAXN];/* 行列下标转换为块下标 */
int getblock(int row, int col, int n)
{return (row / n) * n + col / n;
}int main(void)
{int n, okflag, val, square, b, i, j;while(scanf("%d", &n) != EOF) {memset(row, 0, sizeof(row));memset(col, 0, sizeof(col));memset(block, 0, sizeof(block));okflag = 1;square = n * n;for(i=0; i<square; i++)for(j=0; j<square; j++) {scanf("%d", &val);if(okflag) {if(val > square)okflag = 0;else if(val) {b = getblock(i, j, n);if(row[i][val -1] || col[j][val - 1] || block[b][val - 1])okflag = 0;row[i][val - 1] = 1;col[j][val - 1] = 1;block[b][val - 1] = 1;}}}printf("%s\n", okflag ? "CORRECT" : "INCORRECT");}return 0;
}
POJ3435 Sudoku Checker【谜题+数独】相关推荐
- leetcode之Valid Sudoku有效的数独(一步步改进代码)
题目链接:Valid Sudoku有效的数独 题目已经十分确定的说了只有1~9,因此标记法无疑是非常好的选择. 基本思路:对行.列.小数独块分别用一个size为9的数组来标记数字1~9在本行(列/块) ...
- POJ 2676 Sudoku【DancingLinks,数独】
http://poj.org/problem?id=2676 POJ 2676 Sudoku 也是求解规模为9*9的数独问题,与POJ 3074 Sudoku相同的问题,只是修改了输入输出格式而已.. ...
- POJ-2676 Sudoku(简单数独-dfs深搜)
Sudoku Time Limit: 2000MS Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudoku ...
- TOJ 3287 Sudoku 9*9数独 dfs
描述 Sudoku is a very simple task. A square table with 9 rows and 9 columns is divided to 9 smaller sq ...
- LeetCode 36 Valid Sudoku(有效数独)(*)
翻译 数独板被部分填充,空格部分用'.'来填充.一个部分填充的数组是否有效只需要看其填充的部分即可. 原文 代码 这道题写了一会,错了--因为输入太懒搞了,就直接看了别人写的-- class Solu ...
- leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)
36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...
- LeetCode 36. Valid Sudoku(九宫格数独)
依次检查每行,每列,每个子九宫格是否出现重复元素,如果出现返回false,否则返回true. 难点在于表示第i个九宫格每个格点的坐标. 观察行号规律: 第0个九宫格:000111222; 第1个九宫格 ...
- Leetcode36.Valid Sudoku有效的数独
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...
- Vijos P1335 数独验证【谜题】
背景 XX学校风靡一款智力游戏,也就是数独(九宫格),先给你一个数独,并需要你验证是否符合规则. 描述 具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9,位置不限, 每一列都用到1,2, ...
最新文章
- 复杂人机智能系统功能分配方法综述
- mysql 优化实例(百万级数据)
- php记录用户搜索历史记录,PHPCookei记录用户历史浏览信息的代码
- centos7.2安装mysql5.7_Centos7.2下使用YUM快速安装MySQL5.7的方法
- ​手把手教你如何进行 Golang 单元测试
- Django从理论到实战(part10)--URL命名与反转
- 阿里云贾少天:大规模云服务器高效使用及管理实践
- 蒙特卡洛方法学习(二)
- 使用逻辑回归制作评分卡
- MobaXterm 中文乱码问题
- php 差错,PHP 错误处理
- SVN安装语言包后无中文
- 几个极速版自动阅读项目的autojs脚本
- 数据库面试题及优化手段
- redis的持久化机制详解
- 深入理解volatile关键字---缓存一致性原理
- NBA直播 1223.html,犹他爵士官方:NBA传奇主教练杰里-斯隆去世,享年78岁
- Unity 游戏保护“大练兵”,一文读懂游戏事前防御
- 华摄氏度和摄氏度的转换小数点处理 单片机
- htc x920e刷android7.0,HTC X920E (Butterfly) 刷回官方RUU固件教程