paste bin
Author
Language
C++
Plain text
Accesslog
Action script
Ada
Apache
Arduino
Armasm
Autohotkey
Awk
Bash
Basic
Brainfuck
C
Clojure
Cmake
C#
css
D
Delphi
Dockerfile
Erlang
Fortran
F#
Gauss
Go
Gradle
Graphql
Groovy
Haskell
Ini
Java
JavaScript
json
Julia
Kotlin
Lasso
LaTeX
Leaf
lisp
llvm
Lua
Makefile
Markdown
Mathematica
Matlab
Nginx
Objective-C
Ocaml
Oxygene
Perl
PgSQL
php
Powershell
Processing
Profile
Properties
Puppet
Purebasic
Python
Q
QML
R
Ruby
Rust
Scala
Scheme
Scilab
Shell
Smalltalk
SQL
Swift
Typescript
VB.NET
VB Script
Verilog
Vim
Wasm
x86asm
Xml
Xquery
Yaml
source code:
#include <cstdio> #include <cstring> #include <cstdlib> char sudoku[9][9]; void outputSudoku() { int i,j,W=9; for(i=0;i<W;i++) { for(j=0;j<W;j++) { printf("%d",sudoku[i][j]); } printf("\n"); } } int judge() { int status=1; int i,j,k1,k2,W=9; char bucket[10]; for(i=0;status>-1 && i<W;i++) { memset(bucket,0,sizeof(bucket)); for(j=0;j<W;j++) { bucket[ sudoku[i][j] ] ++; } if(bucket[0]>0) { status = 0; } for(j=1;j<10;j++) { if(bucket[j]>1) { status = -1; break; } } } for(j=0;status>-1 && j<W;j++) { memset(bucket,0,sizeof(bucket)); for(i=0;i<W;i++) { bucket[ sudoku[i][j] ] ++; } if(bucket[0]>0) { status = 0; } for(i=1;i<10;i++) { if(bucket[i]>1) { status = -1; break; } } } for(k1=0;status>-1 && k1<W;k1+=3) { for(k2=0;status >-1 && k2<W;k2+=3) { memset(bucket,0,sizeof(bucket)); for(i=0;i<3;i++) { for(j=0;j<3;j++) { bucket[ sudoku[k1+i][k2+j] ]++; } } if(bucket[0]>0) { status=0; } for(i=1;i<10;i++) { if(bucket[i]>1) { status=-1; break; } } } } return status; } void fill(int x,int y) { int i,j; bool passFlag = true; for(i=x;passFlag && i<9;i++) { for(j=0;passFlag && j<9;j++) { if(sudoku[i][j]==0) { passFlag =false; break; } } if(passFlag==false) break; } int tryValue,status; tryValue=rand(); for(int k=0;k<9;k++) { sudoku[i][j] = 1+ (tryValue+k)%9; status=judge(); if(status == 0) { fill(x,y); } else if (status == 1) { outputSudoku(); return; } } sudoku[i][j]=0; } void solve() { int i,j,W=9; for(i=0;i<W;i++) { getchar(); for(j=0;j<W;j++) { scanf("%c",&sudoku[i][j]); sudoku[i][j] -='0'; } } fill(0,0); } int main(void) { int N; scanf("%d",&N); while(N--) { solve(); } return 0; }
comment: