Sudoku Extension UVALive
来源:互联网 发布:国外期刊数据库 编辑:程序博客网 时间:2024/05/16 01:11
题目:思路非常明确, 九宫的深搜 ,一开始写的时候一直是wa,因为在从当前行换到下一行的时候坐标变换一直有问题,学习了大神的一个变量的深搜,然后转换成坐标的办法。
#include <bits/stdc++.h>using namespace std;const int N = 12; char mp[N][N]; int row[N][N],col[N][N]; int flag[N][N]; int vis[30]; int t,ans; void dfs( int k ){if ( k==81 ) {++ans; return ; }int x = k/9,y = k%9; if ( mp[x][y]>='1' && mp[x][y]<='9' ) {dfs( k+1 ) ; } else if ( mp[x][y]=='0' ) {for ( int i=1; i<=9; i++ ) {if ( row[x][i] || col[y][i] || flag[x/3*3+y/3][i] ) continue;row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 1; dfs( k+1 ) ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 0; }} else if ( mp[x][y]=='e' ) {for ( int i=2; i<=9; i+=2 ) {if ( row[x][i] || col[y][i] || flag[x/3*3+y/3][i] ) continue;row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 1; dfs( k+1 ) ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 0; }} else if ( mp[x][y]=='o' ) {for ( int i=1; i<=9; i+=2 ) {if ( row[x][i] || col[y][i] || flag[x/3*3+y/3][i] ) continue;row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 1; dfs( k+1 ) ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 0; }} else {if ( vis[mp[x][y]-'a'] ) {int i = vis[mp[x][y]-'a'] ; if ( row[x][i] || col[y][i] || flag[x/3*3+y/3][i] ) return ;row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 1; dfs( k+1 ) ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 0; } else {for ( int i=1; i<=9; i++ ) {if ( row[x][i] || col[y][i] || flag[x/3*3+y/3][i] ) continue;vis[ mp[x][y]-'a' ] = i ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 1; dfs( k+1 ) ; row[x][i] = col[y][i] = flag[x/3*3+y/3][i] = 0; vis[ mp[x][y]-'a' ] = 0 ; }}}}int main(){cin>>t; while( t-- ){memset( vis,0, sizeof vis ); memset( flag,0,sizeof flag); memset( row,0,sizeof row ) ; memset( col,0,sizeof col ); for ( int i=0; i<9; i++ ) scanf("%s",mp[i]); for ( int i=0; i<9; i++ ) {for ( int j=0; j<9; j++ ) {if ( mp[i][j]>='1' && mp[i][j]<='9' ) {row[i][mp[i][j]-'0'] = 1; col[j][mp[i][j]-'0'] = 1; flag[i/3*3+j/3][mp[i][j]-'0'] = 1; }}}ans = 0 ; dfs( 0 ); cout<<ans<<endl; }return 0; }
0 0
- Sudoku Extension UVALive
- Sudoku Extension UVALive
- UVAlive 4763 Sudoku Extension【DLX】
- UVALive 4763Sudoku Extension(搜索)
- DLX UVA 1461 - Sudoku Extension
- UVA 1469 Sudoku Extension【加强版数独 DLX】
- 【UVALive】2659 Sudoku 【数独】精确覆盖
- Sudoku
- sudoku
- Sudoku
- sudoku
- Sudoku
- Sudoku
- sudoku
- sudoku
- Sudoku
- Sudoku
- Sudoku
- PAT 1002 A+B for Polynomials(简单计数)
- 设置eclipse注释模板
- pthread_mutex_lock 函数
- 关于linux系统和tomcat时间不一致的问题
- C#获取本机上所有网络接口及真实IP地址信息
- Sudoku Extension UVALive
- ovs vswitchd的启动(二)
- STM32 RTC 时钟简介
- AutoLayout和Masonry两种方式实现自动布局的内容包裹和视图均分
- Struts2的IOC
- 比一比Nmap、Zmap、Masscan三种扫描工具
- 请键入 NET HELPMSG 2182 以获得更多的帮助
- mysql Access denied for user root@localhost错误解决方法总结(原创)
- php综合web开发(8)