#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
using namespace std;
int a[10][10];
int line,row;
void deal(int c[10][10],int s1,int s2,int k);
void deal2(int a[10][10]);
int flag,much;
FILE* p;
int main()
{
int k,i,j;
flag=0;
cin>>line>>row;
p=fopen("opq.txt","w");
for(i=0;i<line;i++){
for(j=0;j<row;j++){
k=0;
deal(a,i,j,k);
if(flag==0){
cout<<"wrong"<<endl;
}
printf("%d\n\n",much);
}
}
fclose(p);
return 0;
}
void deal(int c[10][10],int s1,int s2,int k)
{
int i,j;
int b[10][10];
if(s1>=0&&s1<line&&s2>=0&&s2<row){
for(i=0;i<line;i++){
for(j=0;j<row;j++){
b[i][j]=c[i][j];
}
}
}else{
return;
}
if(b[s1][s2]==0){
k++;
b[s1][s2]=k;
if(k==(line)*(row)){
deal2(b);
return;
}
deal(b,s1-1,s2-2,k);
deal(b,s1-2,s2-1,k);
deal(b,s1-2,s2+1,k);
deal(b,s1-1,s2+2,k);
deal(b,s1+1,s2+2,k);
deal(b,s1+2,s2+1,k);
deal(b,s1+2,s2-1,k);
deal(b,s1+1,s2-2,k);
}
return;
}
void deal2(int b[10][10])
{
int i,j;
for(i=0;i<line;i++){
for(j=0;j<row;j++){
printf("%3d",b[i][j]);
fprintf(p,"%3d",b[i][j]);
}
printf("\n");
fprintf(p,"\n");
}
printf("\n\n");
fprintf(p,"\n\n");
much++;
flag=1;
}
马踏棋盘(6*6时效率不可忍受,求教!)
最新推荐文章于 2022-12-08 10:48:22 发布