m0_73565969 2023-03-16 16:00 采纳率: 53.8%
浏览 82
已结题

为什么VS2022调试结果和执行结果不一样


#include<cstdio>
#include<cmath>

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皇后代码

img


这是直接执行的结果,count的结果正确,但是中间的情况会缺,而且每次执行缺的都不一样

img


这是调试的结果,没有设断点,count结果也正确,中间也不缺情况

这是为什么

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-16 17:25
    关注

    hashTable[maxn] = { false }
    这种写法并不会把所有元素都设置为false,而是只有第一个

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月7日
  • 创建了问题 3月16日