问题链接: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【谜题+数独】相关推荐

  1. leetcode之Valid Sudoku有效的数独(一步步改进代码)

    题目链接:Valid Sudoku有效的数独 题目已经十分确定的说了只有1~9,因此标记法无疑是非常好的选择. 基本思路:对行.列.小数独块分别用一个size为9的数组来标记数字1~9在本行(列/块) ...

  2. POJ 2676 Sudoku【DancingLinks,数独】

    http://poj.org/problem?id=2676 POJ 2676 Sudoku 也是求解规模为9*9的数独问题,与POJ 3074 Sudoku相同的问题,只是修改了输入输出格式而已.. ...

  3. POJ-2676 Sudoku(简单数独-dfs深搜)

    Sudoku Time Limit: 2000MS Memory Limit: 65536K 题目链接http://poj.org/problem?id=2676 Description Sudoku ...

  4. 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 ...

  5. LeetCode 36 Valid Sudoku(有效数独)(*)

    翻译 数独板被部分填充,空格部分用'.'来填充.一个部分填充的数组是否有效只需要看其填充的部分即可. 原文 代码 这道题写了一会,错了--因为输入太懒搞了,就直接看了别人写的-- class Solu ...

  6. leetcode 36. Valid Sudoku | 37. Sudoku Solver(数独)

    36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ 题解 class Solution {public boolean isVal ...

  7. LeetCode 36. Valid Sudoku(九宫格数独)

    依次检查每行,每列,每个子九宫格是否出现重复元素,如果出现返回false,否则返回true. 难点在于表示第i个九宫格每个格点的坐标. 观察行号规律: 第0个九宫格:000111222; 第1个九宫格 ...

  8. Leetcode36.Valid Sudoku有效的数独

    判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗实线分隔的 ...

  9. Vijos P1335 数独验证【谜题】

    背景 XX学校风靡一款智力游戏,也就是数独(九宫格),先给你一个数独,并需要你验证是否符合规则. 描述 具体规则如下: 每一行都用到1,2,3,4,5,6,7,8,9,位置不限, 每一列都用到1,2, ...

最新文章

  1. 复杂人机智能系统功能分配方法综述
  2. mysql 优化实例(百万级数据)
  3. php记录用户搜索历史记录,PHPCookei记录用户历史浏览信息的代码
  4. centos7.2安装mysql5.7_Centos7.2下使用YUM快速安装MySQL5.7的方法
  5. ​手把手教你如何进行 Golang 单元测试
  6. Django从理论到实战(part10)--URL命名与反转
  7. 阿里云贾少天:大规模云服务器高效使用及管理实践
  8. 蒙特卡洛方法学习(二)
  9. 使用逻辑回归制作评分卡
  10. MobaXterm 中文乱码问题
  11. php 差错,PHP 错误处理
  12. SVN安装语言包后无中文
  13. 几个极速版自动阅读项目的autojs脚本
  14. 数据库面试题及优化手段
  15. redis的持久化机制详解
  16. 深入理解volatile关键字---缓存一致性原理
  17. NBA直播 1223.html,犹他爵士官方:NBA传奇主教练杰里-斯隆去世,享年78岁
  18. Unity 游戏保护“大练兵”,一文读懂游戏事前防御
  19. 华摄氏度和摄氏度的转换小数点处理 单片机
  20. htc x920e刷android7.0,HTC X920E (Butterfly) 刷回官方RUU固件教程

热门文章

  1. Golang 协程的使用方法
  2. 点评10款Github上最火爆的国产开源项目
  3. PHP异步调用实现方式
  4. C#图片处理之: 获取数码相片的EXIF信息(二)
  5. Android已读未读功能,Android实现小圆点显示未读功能
  6. 5gh掌上云计算认证不通过_5GH币项目介绍及评级分析
  7. roadrunner监控linux服务器,Jenkins添加TPS与服务器监控变化曲线图
  8. php模糊搜索 变量,自定义搜索seo变量{param}字符串
  9. 新年第一天,人好多啊。
  10. c++多线程——同步并发