poj2676 (dfs+回溯)
| Time Limit: 2000MS | Memory Limit: 65536K | |||
| Total Submissions: 24108 | Accepted: 11259 | Special Judge | ||
Description

Input
Output
Sample Input
1
103000509
002109400
000704000
300502006
060000050
700803004
000401000
009205800
804000107
Sample Output
143628579
572139468
986754231
391542786
468917352
725863914
237481695
619275843
854396127
Source
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define Swap(a,b,t) t=a,a=b,b=t
#define Mem0(x) memset(x,0,sizeof(x))
#define Mem1(x) memset(x,-1,sizeof(x))
#define MemX(x) memset(x,0x3f,sizeof(x));
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f;
const double eps=1e-12;
const int MAX=15;
int map[MAX][MAX];
char temp[MAX];
bool row[MAX][MAX],line[MAX][MAX],rl[MAX][MAX],flag=false;
void dfs(int x,int y)
{
	if (x==10){
		flag=true;
		return ;
	}
	if (map[x][y]){
		if (y==9)
			dfs(x+1,1);
		else
			dfs(x,y+1);
		if (flag)
			return ;
	}
	else{
		int k=3*((x-1)/3)+(y-1)/3+1;
		for (int i=1;i<10;i++){
			if (!row[x][i]&&!line[y][i]&&!rl[k][i]){
				map[x][y]=i;
				row[x][i]=line[y][i]=rl[k][i]=true;
				if (y==9)
					dfs(x+1,1);
				else 
					dfs(x,y+1);
				if(flag)
					return ;
				map[x][y]=0;
				row[x][i]=line[y][i]=rl[k][i]=false;
			}
		}
	}
}
int main()
{
	int t;
	cin>>t;
	while (t--){
		flag=false;
		memset(map,0,sizeof(map));
		memset(row,false,sizeof(row));
		memset(line,false,sizeof(line));
		memset(rl,false,sizeof(rl));
		for (int i=1;i<10;i++){	
			cin>>temp+1;
			for (int j=1;j<10;j++){
				map[i][j]=temp[j]-'0';
				if (map[i][j]){
					int k=3*((i-1)/3)+(j-1)/3+1;
					row[i][map[i][j]]=line[j][map[i][j]]=rl[k][map[i][j]]=true;
				}		
			}
		}
		dfs(1,1);
		for (int i=1;i<10;i++){
			for (int j=1;j<10;j++){
				printf("%d",map[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}
poj2676 (dfs+回溯)的更多相关文章
- 素数环(dfs+回溯)
		题目描述: 输入正整数n,把整数1,2...n组成一个环,使得相邻两个数和为素数.输出时从整数1开始逆时针排列并且不能重复: 例样输入: 6 例样输出: 1 4 3 2 5 6 1 6 5 2 3 4 ... 
- NOJ 1074 Hey Judge(DFS回溯)
		Problem 1074: Hey Judge Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit interger IO format: ... 
- HDU 1016 Prime Ring Problem(经典DFS+回溯)
		Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ... 
- HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)
		哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ... 
- HDU1016 Prime Ring Problem(DFS回溯)
		Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ... 
- uva 193 Graph Coloring(图染色 dfs回溯)
		Description You are to write a program that tries to find an optimal coloring for a given graph. Col ... 
- P1074 靶形数独  dfs回溯法
		题目描述 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z 博士请教,Z 博士拿出了他最近发明的“靶 ... 
- 剪格子---(dfs回溯)
		如图p1.jpg所示,3 x 3 的格子中填写了一些整数. 我们沿着图中的红色线剪开,得到两个部分,每个部分的数字和都是60. 本题的要求就是请你编程判定:对给定的m x n 的格子中的整数,是否可以 ... 
- 蓝桥杯 算法提高 8皇后·改 -- DFS 回溯
		算法提高 8皇后·改 时间限制:1.0s 内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8 ... 
随机推荐
- phonegap 的指南针 api Compass
			一. Compass 介绍方法参数 1.Compass 也就是,常说的指南针,又叫罗盘 2.方法 compass.getCurrentHeading compass.watchHeading co ... 
- The Binder Architecture
			The Binder Architecture is a declarative architecture for iOS development inspired by MVVM and VIPER ... 
- tp5.0和tp3.2中前台模板IF标签和FOREACH的区别
			IF标签 tp3.2 <if condition="($name eq 1) OR ($name gt 100) "> value1 <elseif condit ... 
- Myeclipse 自带Tomcat启动8080端口占用
			在启动Myeclipse自带的Tomcat发现报错,显示8080端口被占用 第一步:window+r 组合键,调出命令窗口. 第二步:输出命令:netstat -ano|findstr 8080 ... 
- PHP Socket 简单使用
			<?php /*socket收发数据 @host(string) socket服务器IP @post(int) 端口 @str(string) 要发送的数据 @back 1|0 socket端是 ... 
- argsort
			argsort函数返回的是数组值从小到大的索引值One dimensional array:一维数组 >>> x = np.array([3, 1, 2]) >>> ... 
- ETL测试小结
			一.ETL测试的重要性: ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统 ... 
- 浅谈DB2的四个隔离级别
			隔离级别定义用于控制并发事务的行为,它决定在访问数据时数据是如何锁定的.如何与其他进程隔离的. 包括四个级别,级别从高到低: RR(可重复读取) RS(读取稳定性) CS(游标稳定性) UR(未提交的 ... 
- openmax component类的继承关系
			向OpenCORE里继承一个新的codec时,需要用到OpenMAX接口规范对该codec进行封装,即要定义一个用于封装的类(wrapper),实现OpenMAX规定的集中核心方法(omx core ... 
- Visual Studio Installer打包安装项目VS2015
			使用VS2015的Visual Studio Installer打包安装项目,虽然整体操作很简单,但还是有几个特殊的点需要记一下,故写下此博客方便以后查阅 第一步,创建安装项目 如下: 里面最左侧的框 ... 
