【poj 2627】 Sudoku 题意&题解&代码(C++)
来源:互联网 发布:ubuntu 时区 编辑:程序博客网 时间:2024/06/04 19:37
题目链接:
http://poj.org/problem?id=2676
题意:
给出一个未填的数独,求这个数独的解并输出填好的数独,若此数独无解,则输出原给定的错误数独。
题解:
dfs回溯搜索
代码:
#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>using namespace std;int flag,T,f[15][15],c[15][15];char shu[15];int vis[4][4][10],visx[15][10],visy[15][10];void init(){ memset(vis,0,sizeof(vis)); memset(visx,0,sizeof(visx)); memset(visy,0,sizeof(visy));}void dfs(){ if (flag==1) return ; int x=-1,y=-1; for (int i=1;i<=9;i++) for (int j=1;j<=9;j++) if (c[i][j]==0) { x=i,y=j; break; }// cout<<x<<' '<< y<<endl; if (x==-1&&y==-1) { for (int i=1;i<=9;i++) { for (int j=1;j<=9;j++) printf("%d",c[i][j]); printf("\n"); } flag=1; return ; } for (int i=1;i<=9;i++) if (visx[x][i]==0&&visy[y][i]==0&&vis[(x-1)/3][(y-1)/3][i]==0) { visx[x][i]=1;visy[y][i]=1;vis[(x-1)/3][(y-1)/3][i]=1; c[x][y]=i; dfs(); c[x][y]=0; visx[x][i]=0;visy[y][i]=0;vis[(x-1)/3][(y-1)/3][i]=0; }}int main(){ scanf("%d",&T); while(T--) { init(); for (int i=1;i<=9;i++) { scanf("%s",shu); for (int j=1;j<=9;j++) { int tmp=shu[j-1]-'0'; f[i][j]=tmp;c[i][j]=tmp; visx[i][tmp]=1; visy[j][tmp]=1; vis[(i-1)/3][(j-1)/3][tmp]=1; } } flag=0; dfs(); if (flag==0) for (int i=1;i<=9;i++) { for (int j=1;j<=9;j++) printf("%d",f[i][j]); printf("\n"); } }}
0 0
- 【poj 2627】 Sudoku 题意&题解&代码(C++)
- POJ 2828 Buy Tickets 题意&题解&代码(c++)
- 【POJ 2104】K-th Number 题意&题解&代码(c++)
- 【POJ 1451】T9 中文题意&题解&代码(c++)
- 【POJ 3461】Oulipo 中文题意&题解&代码(C++)
- 【POJ 3630】Phone List 中文题意&题解&代码(C++)
- 【POJ 2296】 Ring 中文题意&题解&代码(C++)
- 【POJ 2778】DNA Sequence 中文题意&题解&代码(C++)
- 【poj 1321】 棋盘问题 题解&题意&代码(C++)
- 【poj 3009】Curling 2.0 中文题意&题解&代码(C++)
- 【poj 1426】Find The Multiple 题意&题解&代码(C++)
- 【poj 2251】 Dungeon Master 题意&题解&代码(C++)
- 【poj 3087】 Shuffle'm Up 题意&题解&代码(C++)
- 【poj 3126】Prime Path 题意&题解&代码(C++)
- 【poj 3414】Pots 题意&题解&代码(C++)
- 【poj 3278】Catch That Cow 题意&题解&代码(C++)
- 【poj 2531】Network Saboteur 题意&题解&代码(C++)
- 【poj 1129】Channel Allocation 题意&题解&代码(C++)
- 使用MAC的一些小知识
- iOS性能优化之内存管理:Analyze、Leaks、Allocations的使用和案例代码
- 算法-java(1)
- Silktest试用笔记
- 虚幻4Matinee功能 基本概念及简单示例(Sequence编辑器)
- 【poj 2627】 Sudoku 题意&题解&代码(C++)
- 【iOS开发-103】解决方案:iOS8.1中UIBarButtonItem的setTitleTextAttributes对Disabled颜色设置无效
- sql约束
- 线程处理(C# 编程指南)学习笔记1
- Cocos动画
- UVA 11552——Fewest Flops
- ios中的反射
- git-am 和 format-patch 的使用
- struts2 文件上传