「已注销」 2023-03-24 08:07 采纳率: 91.2%
浏览 41
已结题

请问这个bug是什么意思?为什么说count不明确?

img


#include<iostream>
#include<stdlib.h>
using namespace std;
#define N 20            //最多皇后的个数
int q[N];            //存放皇后所在的列号,如(i,q[i])为皇后的一个位置    
/7oid Displaysolution(int n)        //输出n皇后的一个解
//{
//    int static count = 0;//累计解的个数
//    printf("第%d个解", ++count);
//    for (int i = 1; i <= n; i++)
//    {
//        cout << "(" << i <<"," << q[i] << ")";
//    }
//    cout << endl;
//}

int  count = 0;//累计解的个数
void Displaynum(int n)        //解的个数
{
    count++;
    cout << count << endl;
}


bool place(int i, int j)//测试(i,j)位置能否摆放皇后
{
    if (i == 1)
        return true;
    int k = 1;
    while (k < i)            //k=1到i-1,代表已经放过皇后的地方
    {
        if ((q[k] == j) || abs(q[k] - j) == abs(i - k))
            return false;
            k++;
    }
    return true;
}
void queen(int i, int n)            //放置1到i的皇后
{
    if (i > n)
    {
        Displaynum(n);
    }
    else
    {
        for (int j = 1; j <= n; j++)
        {
            if (place(i, j))
            {
                q[i] = j;
                queen(i + 1, n);
            }
        }
    }
}

int main()
{
    //int n;
    //cout << "请输入皇后的个数:" << endl;
    //while (cin >> n)
    //{
    //    if (n > 20)
    //        cout << "n值太大,无法求解" << endl;
    //    else
    //    {
    //        cout << "答案如下:" << endl;
    //        queen(1, n);
    //    }
    //}
    //return 0;

    int num = 0;
    int a[8][8];
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
            cin >> a[i][j];
    }
    queen(1, 8);
}
  • 写回答

5条回答 默认 最新

  • 丘比特惩罚陆 2023-03-24 08:40
    关注

    C++ 中,变量必须在使用前进行定义。如果没有定义变量 count 的数据类型,或者 count 的作用域不明确,就会导致编译器无法确定 count 的数据类型和作用域,从而报错。

    可能的解决方法是,在使用变量 count 之前,确保已经定义了该变量,例如在代码中添加 int count; 这样的语句,或者将变量 count 声明为全局变量。试试吧!不行再问!

    你这代码写了着急了姑娘,有好几个错误!你看一下是不是这几个:
    1、Displaysolution 函数被注释掉了,但 Displaynum 函数被调用了,导致输出的结果不是按照期望的格式输出。
    2、在 place 函数中,如果第一个皇后的位置为 (1,1),则该位置会被认为是不可放置的。应该将第一个皇后的位置设置为 (0,0)。
    3、在 place 函数中,k 的自增语句 k++; 应该放在循环体中,否则无法退出循环。
    4、在 main 函数中,定义了一个二维数组 a,但并没有用到,且该数组不符合要求。(你题目的要求)
    5、在 main 函数中,调用了 queen 函数时传入的参数 n 是 8,但是在 queen 函数中使用的是宏定义的 N,值为 20。因此程序输出的结果可能不是预期的。
    6、在 main 函数中,没有对输入的数据进行任何校验和处理,如果输入数据不符合要求,程序可能会崩溃或输出错误的结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程