问题链接: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. 基于OpenCV的实时停车地点查找
  2. Python pickle模块:实现Python对象的持久化存储
  3. iOS架构-静态库.framework之依赖第三方库(7)
  4. java精确除法计算,四舍五入 Java问题通用解决代码
  5. mysql8 允许外网访问
  6. Firefox OS, 向jQuery中XMLHttpRequest构造函数中传参,实现跨域请求数据
  7. 基于源码仿建视频解析网站
  8. java: cannot execute binary file错误
  9. Leecode大厂热题100道系列题解
  10. Linq 学习笔记(二)
  11. mysql 备库,【MySQL】数据库备库策略与脚本
  12. 整数快速幂(原理+模板)
  13. RabbitMQ学习——基本概念
  14. 136.Single Number
  15. 【pandas】 之 Series、DataFrame 的拼接 —— pd.concat、df.append(df)
  16. Vitis开发笔记:使用分区工具Gparted将SD卡分为BOOT和RoofFS
  17. 海思3559A上编译ffmpeg
  18. 2022计算机考研统考的院校有哪些,2022考研初试科目都有哪些?
  19. 虚拟服务器端口211,双路由器要这样映射-路由器设置端口映射
  20. Qt使用三点坐标画圆弧

热门文章

  1. Cocos Creator 编辑器扩展
  2. GitHub上最火的40个iOS开源项目(二)
  3. 编写IOCP时的几个注意事项(Mirosoft)
  4. 使用IOCP需要注意的一些问题~~(不断补充)
  5. linux内核rop姿势详解,Linux内核ROP姿势详解(二)
  6. 八、Mysql 间隙锁(gap 锁)与慢查询
  7. python 知乎 合并 pdf_32.使用selenium爬取知乎,并实现多页保存为一个PDF文件
  8. OpenCV精进之路(十九):工具——程序打包发布
  9. Delphi一句话帮助
  10. 给MM修电脑的三个步骤