|
- #include<iostream>
- #include<cstdlib>
- using namespace std;
- int a[1000][1000],n,tot,x0,y0;
- void print()
- {
- tot++;
- for(int x=1;x<=n;x++)
- {
- for(int y=1;y<=n;y++)cout<<a[x][y]<<" ";
- cout<<endl;
- }
- cout<<endl;
- }
- void mysearch(int i)
- {
- int x,y;
- for(x=x0;x<=n;x++)
- for(y=y0;y<=n;y++)
- {
- if(!a[x][y]&&!a[x+1][y])
- {
- a[x+1][y]=a[x][y]=i;
- x0=x;y0=y;
- mysearch(i+1);
- a[x+1][y]=a[x][y]=0;
- x0=0;y0=0;
- }
- if(!a[x][y]&&!a[x][y+1])
- {
- a[x][y]=a[x][y+1]=i;
- x0=x;y0=y;
- mysearch(i+1);
- a[x][y]=a[x][y+1]=0;
- x0=0;y0=0;
- }
- }
- if(i==n*n/2)print();
- }
- int main()
- {
- cin>>n;
- //if(n%2){cout<<"None!!";return 0;}
- for(int i=0;i<=n+1;i++)
- a[0][i]=a[n+1][i]=a[i][n+1]=a[i][0]=-1;
- mysearch(1);
- cout<<tot;
- system("pause");return 0;
- }
复制代码
这是我的,求改进。。 |
|