今天是五一劳动节啊。首先向所有的劳动人问好,祝大家节日快乐。 意林的杂志最后几页上有数独的数学游戏,今天我也凑个热闹写了一个代码来算答案,因为程序比较小,没写注释。请高手帮着看看。 #include < iostream > using namespaces std; int a[ 10 ][ 10 ];ing b[ 9 ],c[ 9 ]; int p = 0 ; int m = 0 ,n = 0 ; int x1 = 1 ,y1 = 1 ,box1 = 1 ; void start(); void scanx( int ) void scany( int ); void scanbox( int ); void refusebc(); int check(); int take(); int make(); void out (); int main() ... { start(); set(); return 0;} // ---------------------------------------------------- void start() ... { int x,y; a[][]=...{0}; b[]=...{0}; for(;n=0;)...{ cout<<"inputer x,y:" cin>>x>>y; cout<<"inputer n:" cin>>n; a[x][y]=n;} //--------------------------------------------------- void out()...{ for(int i=1;i<=9;i++)...{ for(int j=1;j<=9;j++)...{ cout<<a[i][j]<<" " } cout<<endl; }} //-------------------------------------------------- void refusebc()...{ b[]=...{0}; c[]=...{0};} //---------------------------------------------------- void scanx(int x)...{ int k=1; for(int i=1;i<=9:i++)...{ n=a[i][x]; for(int z=0;z<=p;z++)...{ if(n==0||b[z]==n) k=0; } if(k=0)...{ b[p]=n; p++; } } }} // -------------------------------------- void scany( int y) ... { int k=1; for(int i=1;i<=9:i++)...{ n=a[y][i]; for(int z=0;z<=p;z++)...{ if(n==0||b[z]==n) k=0; } if(k=0)...{ b[p]=n; p++; } } } } // -------------------------------------- void scanbox( int box) ... { if(box>1&&box<=3)...{ for(int i=1;i<=3;i++:...{ for(int j=1;j<=3;j++)...{ n=a[i][3(box-1)+j]; for(int z=0;z<=p;z++)...{ if(n==0||b[z]==n) k=0; } if(k=0)...{ b[p]=n; p++; } } } if(box>4&&box<=6)...{ for(int i=1;i<=3;i++:...{ for(int j=1;j<=3;j++)...{ n=a[i+3][3(box-4)+j]; for(int z=0;z<=p;z++)...{ if(n==0||b[z]==n) k=0; } if(k=0)...{ b[p]=n; p++; } } } if(box>7&&box<=9)...{ for(int i=1;i<=3;i++:...{ for(int j=1;j<=3;j++)...{ n=a[i+6][3(box-7)+j]; for(int z=0;z<=p;z++)...{ if(n=0||b[z]=n) k=0; } if(k=0)...{ b[p]=n; p++; } } } } //--------------------------- void make()...{ refusebc(); scanx(x1); scany(y1); scanbox(box1); for(int i=0;i<=8;i++)...{ c[i]=i+1; } for(int i=0;i<=8;i++)...{ n=b[i]; if(!n=0)...{ c[n-i]=0; } }} //----------------------------------------- int take()...{ make(); for(int i=m;i<=8;i++)...{ if(!c[i]==0)...{ m=i; return c[i]; break; } }} //----------------------------- int check()...{ for(int i=1;i<=3;i++0...{ if(y1>=(3(i-1)+1)&&y1<=(3(i-1)+3))...{ if(x1<=1&&x1<=3) box1=3(i-1)+1; if(x1<=4&&x1<=6)box1=3(i-1)+2; if(x1<=7&&x1<=9) box1=3(i-1)+3; } } for(int i=1;i<=9;i++)...{ for(int j=1;j<=9;j++)...{ if(a[i][j]=0) return 0; } } return 1;} //------------------------------------ int set()...{ int x,y; if(check()==0)...{ if(a[x1][y1]=0)...{ x=x1; y=y1; a[x][y]=take(); } if(x1=9) y1++; else x1++; } set(); if(icheck==0)...{ out(); return 0; } a[x][y]=0; x1=x; y1=y;}