#include
#include
const int maxn = 11;
int count = 0;
int n, P[maxn], hashTable[maxn] = { false };
void generateP(int index)
{
if (index == n + 1)
{
for (int i = 1; i <= n; i++)
{
printf("%d", P[i]);
}
printf("\n");
count++;
}
for (int x = 1; x <= n; x++)
{
if (hashTable[x] == false)
{
bool flag = true;
for (int pre = 1; pre < index; pre++)
{
if (abs(index - pre) == abs(x - P[pre]))
{
flag = false;
break;
}
}
if(flag)
{
P[index] = x;
hashTable[x] = true;
generateP(index + 1);
hashTable[x] = false;
}
}
}
}
int main()
{
n = 8;
generateP(1);
printf("%d", count);
}
这是我写的一个8皇后代码
这是为什么
参考GPT和自己的思路:
您好,根据您提供的信息,可能是由于程序中的输出操作时序不一致导致的。在直接执行时,程序的输出被缓存,并不是即时输出,而在调试模式下,程序的输出是实时的,会立即显示出来。因此,可能会出现直接执行时部分输出未及时更新的情况,而在调试模式下,由于输出是实时的,结果更加完整。如果您希望直接执行时输出完整的结果,可以尝试使用 fflush(stdout) 命令来刷新输出流。
另外,建议在代码中避免使用 count 作为变量名,因为 count 是 C++ 标准库中的函数名,可能会引起命名冲突和编译错误。
hashTable[maxn] = { false }
这种写法并不会把所有元素都设置为false,而是只有第一个