一道《C语言版数据结构》的题目!帮帮忙啊!

来源:百度知道 编辑:UC知道 时间:2024/06/01 11:07:40
跳马问题,就是64个国际象棋格子,任意放置一个吗,如何不重复地把格子走完。

#include<iostream.h>
#include<iomanip.h>
#include<stdio.h>

const int N = 8;

int w = 0;
int way1[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
int way2[8] = { 1, 2, 2, 1, -1, -2, -2, -1};
int ch[N*N] = { 0 };
int a[N*N+1][3] = { 0 };
int dir[N][N][8];
int st = 1;
char c = 'y';
int weight[N][N];

void caculate();
void dirctions();
void print();
int check(int i, int j);

void caculate() { //计算各点的权值
int i, j, k;
for(i = 1; i <= N; i++)
for(j = 1; j <= N; j++)
for(k = 0; k < N; k++) {
int x, y;
x = i + way1[k];
y = j + way2[k];
if ( x >= 1 && x <= N && y >= 1 && y<=N )
weight[i-1][j-1]++;
}
}

int check(int i,int j) { //检查(i,j)是否在棋盘内
if( i < 1 || i > 8 || j < 1 || j > 8 )
return 0;
return 1;
}

vo