騎士巡回のプログラムを学んでいる物です。
下のプログラムによって経路数と一番内側のif文の評価回数を表示したいのですが,うまくできません><
a,b,cを使って考えたのですが、どのようにしたらよろしいでしょうか??
教えてください><
#include<stdio.h>
#define M 8 //板の大きさ
#define N 8
int array[N][N]; //到達を判別
int move[M][2]={{2,1},{1,2},{-1,2},{-2,1},{-2,-1},{1,-2},{2,-1}};
int n_a=0;
void try(int x,int y,int a_move){ //x,yからスタートする
int n,nx,ny,i;
long int a,b,c; //カウント変数
a=0;
b=0;
for(i=0;i<M;i++){
nx=x+move[0];
ny=y+move[1];
if(nx<0 || nx>=N) continue; //板内にあるか判断
if(ny<0 || ny>=N) continue; //板内にあるか判断
if(array[nx][ny]==0){
array[nx][ny]=a_move;
if(a_move==n*n){
if(c<100000000000000) c++;
if(b<100000){
c=0;
b++;
}
else{
c=0;
b=0;
a++;
}
printf(" %d %d %d\n",a,b,c); //
}
else{
try(nx,ny,a_move+1); //バックトラック
}
array[nx][ny]=0;
}
}
}
int main(){
int i,j;
for(i=0;i<N;i++){
for(i=0;i<N;i++){
array[j]=0;
array[0][0]=1;
try(0,0,2); //0,0からスタート
return 0;
}
}
}