poj 3435 检测数独状态是否合法

题意:

给一个数独的状态,判断它是否合法。

分析:

水,直接判断。

代码:

//poj 3435
//sep9
#include <iostream>
using namespace std;
const int maxN=10;
const int MAX=maxN*maxN+10;
int a[MAX][MAX];
int col_check[MAX][MAX];
int row_check[MAX][MAX];
int grid_check[MAX][MAX];
int n,c,r;

bool check()
{
	memset(row_check,0,sizeof(row_check));
	memset(col_check,0,sizeof(col_check));
	memset(grid_check,0,sizeof(grid_check));
	for(int i=0;i<r;++i)
		for(int j=0;j<c;++j)
			if(a[i][j]!=0){
				if(row_check[i][a[i][j]]!=0)
					return false;
				if(col_check[j][a[i][j]]!=0)
					return false;
				int g=i/n*n+j/n;
				if(grid_check[g][a[i][j]]!=0)
					return false;
				row_check[i][a[i][j]]=1;
				col_check[j][a[i][j]]=1;
				grid_check[g][a[i][j]]=1;
			}
	return true;
}

int main()
{
	scanf("%d",&n);
	c=r=n*n;
	for(int i=0;i<r;++i)
		for(int j=0;j<c;++j)
			scanf("%d",&a[i][j]);
	if(check())
		puts("CORRECT");
	else
		puts("INCORRECT");
	return 0;
} 
时间: 2024-10-11 07:48:25

poj 3435 检测数独状态是否合法的相关文章

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

线上一个简单检测Ping状态的邮件报警脚本

Step1.安装sendmail来发邮件 # yum -y install sendmail # /etc/init.d/sendmail start # chkconfig sendmail on Step2.安装邮件客户端 # yum -y install mutt 2.1添加发件人信息,如下 # vim /etc/Muttrc set charset="utf-8"           #设置发邮件编码 set envelope_from=yes set rfc2047_para

POJ 3254 Corn Fields 状态压缩DP (C++/Java)

http://poj.org/problem?id=3254 题目大意: 一个农民有n行m列的地方,每个格子用1代表可以种草地,而0不可以.放牛只能在有草地的,但是相邻的草地不能同时放牛, 问总共有多少种方法. 思路: 状态压缩的DP. 可以用二进制数字来表示放牧情况并判断该状态是否满足条件. 这题的限制条件有两个: 1.草地限制. 2.相邻限制. 对于草地限制,因为输入的时候1是可以种草地的. 以"11110"草地分析,就只有最后一个是不可以种草的.取反后得00001  .(为啥取反

一个检测应用状态的脚本

#!/bin/sh #Description:       Check ICE3.0 State #Last Update:       2014/06/11/01 WORKDIR=`pwd` export REPORTDIR=$WORKDIR/`date "+%Y%m%d%H%M%S"` export TG=`date "+%Y%m%d%H%M%S"` export BEGIN=`date -d "-1 hour" "+%H:%M:%

POJ 3254 Corn Fields(状态压缩DP)

Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Description Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yumm

[iOS 多线程 &amp; 网络 - 2.8] - 检测网络状态

A.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的:(1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能)(2)根据用户的网络状态进行智能处理,节省用户流量,提高用户体验 WIFI\3G网络:自动下载高清图片 低速网络:只下载缩略图 没有网络:只显示离线的缓存数据 苹果官方提供了一个叫Reachability的示例程序,便于开发者检测网络状态https://developer.apple.com/library/ios/samplecode/Reachability

iOS 检测网络状态

1.为什么要检测网络状态? 1.1 让用户知道自己的网络状态,防止用户埋怨"这个应用太垃圾,获取数据那么慢" 1.2 根据用户的网络状态,智能处理,提升用户体验 例如某些手机浏览器,检测到用户网络是2G/3G时,会自动切换为无图模式 2.手动触发 2.1 首先下载苹果的示例程序Reachability, 取得示例程序里的Reachability.h和Reachability.m, 添加到自己项目里 代码如下 - (void)touchesBegan:(NSSet *)touches w

检测表单是否合法,为什么不能用n++的探讨

做表单处理,一般都是要检查用户输入的内容是否合法,然后全部合法才输出的 于是我们就要面对一个问题,如何检查是不是全部合法?不合法的时候怎么终结掉"提交"按钮的功能呢? 一开始我提出了定义一个变量n,然后用户每次输入一个数据就进入检测函数,然后函数结尾处只要判断通过就n++: 最终只需要判断n的值是否达到需求值就可以决定"提交"按钮是否作用了. 但是,后来我也发现这个方法的不好之处了,虽然很方便,但是始终无法排除掉用户重复输入同一个数据的干扰,要是用户一直输入一个合法

poj 1185 炮兵阵地(状态压缩dp)

Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图.在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队):一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格.图上其它白色网格均攻击不