- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在努力提高我在 C 中的递归技能,并且遇到了这个问题。我试图解决它,但代码似乎无法正常工作。例如,骑士有 108 个选项可以在 6 次移动中从 (1,1) 移动到 (8,8),而在我的代码中结果完全不同。问题是在 8x8 棋盘中,有多少种方法可以将骑士从 (1,1) 移动到 (8,8) n 步(n 由用户给出)。这是我的代码:
#include <stdio.h>
#define SIZE 8
//x,y coordinates of the knight.
int knightsTour(int x, int y, int num);
void main() {
int n;
int result;
do {
scanf(" %d", &n);
result = knightsTour(1,1,n);
printf("%d\n", result);
} while (n > 0);
}
int knightsTour(int x,int y,int num) {
int result = 0;
int i, j;
if (num == 0) {
return 0;
}
if (((x > 8) || (y > 8))||((x == 8) && (y == 8))) {
return 0;
}
for (i = 1; i <= SIZE; i++) {
for (j = 1; j <= SIZE; j++) {
if ((i != y) && (j != x) && ((i != y + j) && (j != x + i)) && ((i != y + j) && (j != x - i))
&& ((i != y - j) && (j != x + i)) && ((i != y - j) && (j != x - i))) {
result += knightsTour(i, j, num - 1) + 1;
}
}
}
return result;
}
最佳答案
您的代码有几个问题:
一种方法是以下递归方法:
综合起来:
#include <stdio.h>
#define SIZE 8
int knightsTour(int x, int y, int num)
{
if (x < 1 || x > SIZE) return 0;
if (y < 1 || y > SIZE) return 0;
if (num == 0) return (x == SIZE && y == SIZE);
return knightsTour(x + 2, y + 1, num - 1)
+ knightsTour(x + 1, y + 2, num - 1)
+ knightsTour(x - 1, y + 2, num - 1)
+ knightsTour(x - 2, y + 1, num - 1)
+ knightsTour(x - 2, y - 1, num - 1)
+ knightsTour(x - 1, y - 2, num - 1)
+ knightsTour(x + 1, y - 2, num - 1)
+ knightsTour(x + 2, y - 1, num - 1);
}
int main(void)
{
int result = knightsTour(1, 1, 6);
printf("%d\n", result);
return 0;
}
这段代码很简单,它确定了 108 种可能的着法。
关于c - 骑士之旅- 给定 n 步,骑士在 n 步中有多少种选择可以从 (1,1) 移动到 (8,8)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46266854/
我是docker的新手,我正在尝试将Angular示例项目“Tour of heros”进行docker化,您可以在这里找到: https://angular.io/generated/zips/to
当我点击“结束游览”按钮时,我无法再次开始 Bootstrap 游览。我搜索了所有 documentation ,但我还没有找到解决方案。 最佳答案 也试试 tour.restart()。我刚刚问了同
我正在浏览Tour C++中的Aliases模板。我不明白下面的代码以及如何使用它? template class Vector { public: using value_type = T;
我已经实现了intro.js到我的网站。但我只想在第一次访问时开始旅行。可能是通过使用cookie..网站是用html而不是php制作的.. 最佳答案 JavaScript cookie 是一种解决方
我想使用Knockout.js与 Bootstrap Tour 。特别是,我想将一些数据绑定(bind)点击处理程序附加到游览步骤中的按钮。 我创建了一个像这样的简单游览: var tour = ne
我正在学习着名的 Angular 教程,英雄之旅,但我正在努力迈出一步。 关于 sixth course, HTTP ,我们正在使用一种工具来模拟对 API 的 API 调用。 我想我遵循了所有步骤,
我正在做 Go 之旅,这部分是“slice 就像对数组的引用”。我根本没有更改此代码,所以我很好奇为什么它会耗尽内存。 最佳答案 不应该崩溃,可能是旅游网站有一段时间出了问题......目前任何方式,
A Tour of Go #23 : package main import ( "fmt" "math" ) func pow(x, n, lim float64) float64
无法将其分解为更小的示例...所以我使用 std::multimap 来存储一些值...这是一个简单的多项式类。 问题是最后一个函数,它将两个多项式相乘。当它与它们相乘时,它会产生一个具有多项式的多项
环境:Angular 5+ 来源:https://angular.io/tutorial 在 heroes.component.ts 类中有一个带冒号的赋值,如下所示: export class He
代码 let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8]
在 Bootstrap 演练中,我们有下一个和上一个按钮。在此点击下一步按钮,我们进入下一步。 但我想添加条件,如果该输入字段为空,则演练不应移至下一步,它应仅停留在当前步骤。 引用代码如下: rec
我是一名优秀的程序员,十分优秀!