// 马踏棋盘1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> using namespace std; int a[5][5]; int cnt = 0; void print() { for (int i = 0;i < 5;i++) { for (int j = 0;j < 5;j++) printf("%3d", a[i][j]); cout << endl; } cout << endl; } int isPass(int i,int j) { return ((i >= 0 && i < 5)&& (j >= 0 && j < 5)&& !a[i][j]); } void Path(int i, int j, int r) { if (isPass(i, j)) { if (r == 25) { a[i][j] = r; cnt++; printf("第%d种解:\n",cnt); print(); a[i][j] = 0; return; } a[i][j] = r; Path(i - 1, j + 2, r + 1); Path(i - 1, j - 2, r + 1); Path(i + 1, j + 2, r + 1); Path(i + 1, j - 2, r + 1); Path(i - 2, j + 1, r + 1); Path(i - 2, j - 1, r + 1); Path(i + 2, j + 1, r + 1); Path(i + 2, j - 1, r + 1); a[i][j] = 0; } } int main() { for (int i = 0;i < 5;i++) for (int j = 0;j < 5;j++) a[i][j]=0; Path(0, 0, 1); cout << "共有"<<cnt <<"种解"<< endl; return 0; }
2015上机二 国际象棋跳马5*5
猜你喜欢
转载自blog.csdn.net/mr_ystreet/article/details/60145394
今日推荐
周排行