【POJ3435】Sudoku Checker,注意:这不是数独!!!!

题意:给一个边长n*n的正方形数阵,然后问每一行、列、阵当前有值的数有没有重,你看一下两个样例就知道了。

题解:你想我告诉你怎么做?……如果这都不会,你该有多水啊。直接一byte一byte扒代码吧。

代码:

#include <cstdio>
#include <cstring>
using namespace std;
#define N 105
int map[N][N],visit[N],n,m;
int main()
{
//	freopen("test.in","r",stdin);
	int i,j,flag=1,_i,_j;
	scanf("%d",&n);m=n*n;
	for(i=1;i<=m;i++)for(j=1;j<=m;j++)scanf("%d",&map[i][j]);
	for(i=1;i<=m;i++)
	{
		memset(visit,0,sizeof(visit));
		for(j=1;j<=m;j++)if(visit[map[i][j]])
		{
			puts("INCORRECT");
			return 0;
		}
		else if(map[i][j])
			visit[map[i][j]]=1;
		memset(visit,0,sizeof(visit));
		for(j=1;j<=m;j++)if(visit[map[j][i]])
		{
			puts("INCORRECT");
			return 0;
		}
		else if(map[j][i])
			visit[map[j][i]]=1;
	}
	for(i=0;i<n;i++)for(j=0;j<n;j++)
	{
		memset(visit,0,sizeof(visit));
		for(_i=1;_i<=n;_i++)for(_j=1;_j<=n;_j++)
		{
			if(visit[map[i*n+_i][j*n+_j]])
			{
				puts("INCORRECT");
				return 0;
			}
			else if(map[i*n+_i][j*n+_j])
				visit[map[i*n+_i][j*n+_j]]=1;
		}
	}
	puts("CORRECT");
	return 0;
}
时间: 2024-10-12 19:26:00

【POJ3435】Sudoku Checker,注意:这不是数独!!!!的相关文章

POJ3435 Sudoku Checker

问题链接:POJ3435 Sudoku Checker.入门练习题,用C语言编写程序. 题意简述:输入n,然后输入(n×n)×(n×n)的二维数组,0表示可以是任意值,编写程序检查这些数据是否满足数独的初始状态. 问题分析:需要做的检查有:值范围检查,行.列和块的值重复检查. 程序中编写函数getblock()用于将行和列的值转换为块的值. AC的C语言程序如下: /* POJ3435 Sudoku Checker */ #include <stdio.h> #include <memo

POJ 3435 Sudoku Checker

Description The puzzle game of Sudoku is played on a board of N2 × N2 cells. The cells are grouped in N × N squares of N × N cells each. Each cell is either empty or contains a number between 1 and N2. The sudoku position is correct when numbers in e

ACdream 1195 Sudoku Checker (暴力)

Sudoku Checker Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatus Problem Description Sudoku is a popular single player game. The objective is to fill a 9x9 matrix with digits so that each column, each row, a

HDU 1426 Sudoku Killer(dfs 解数独)

传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1426 Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9804    Accepted Submission(s): 2944 Problem Description 自从2006年3月10日至11日的首届数独世界

Sudoku Killer(hdu 1426 数独)

数独游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字.同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字.比如有这样一个题,大家可以仔细观察一下,在这里面每行.每列,以及每个3x3的方格都包含1-9这九个数字. 例题: 答案: Input 本题包含多组测试,每组之间由一个空行隔开.每组测试会给你一个 9*9 的矩阵,同一行相邻的两个元素用一个空格分开.其中1-9代表该位置的已经填好的数,问号(?

Valid sudoku, 是否是有效的数独

问题描述:给定9x9矩阵,看是是否是有效数独,不用全部都填上数字,可以为. 算法分析:这道题就是判断,不难,有效数独三个充分条件,行,列,3*3子矩阵,都要满足数字不能重复. 1 public boolean isValidSudoku(char[][] board) 2 { 3 if(board == null || board.length != 9 || board[0].length != 9) 4 { 5 return false; 6 } 7 8 //判断行 9 for(int i

[原创][网页游戏]数独生成算法及实例

[ 程序修正 2015/02/23 补充及订正方法:iphone上的Safari会自动对看起来像是电话号码的数字串(包括已经加入连字符或括号格式化过的)添加电话链接,点击之后会询问用户是否想要拨打该号码. 关闭方法: <meta name="format-detection" content="telephone=no" /> 单独开放方法: <a href="tel:13800138000">13800138000<

回溯法求解数独算法(C语言)

没有对输入的待解数独进行一般性验证(同一行.一列以及同一个小九宫格都不能出现重复数字) 算法利用回溯的思想: 从第一个空白处开始,找到其候选解(排除同行.同列以及同一小九宫格的所有出现过的数字,剩下未出现的数字都是候选解)的第一个值填入数独. 对第二个空白执行第一步(前面所填入的数字对此空白处有影响). 当出现某个空白的候选解个数为0时,就开始回溯,找到第一个候选解多于一个的,将其在使用的候选解设为不可取(本程序取值为-1),找到其下一个候选解,继续上面的步骤! 直到所有空白处填满,运算完成,输

数独解法(C#)

未完成,回家继续 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Algorithems { class Sudoku_Chain : IAlgorithm { class Blank { public long Possibilies = 0x111111111; public int X;