为什么这里的step到不了80
时间: 2024-03-11 09:45:24 浏览: 198
这段代码中的 `step` 是用来表示当前填空格子的编号,范围是从0到80,一共81个格子。当 `step` 等于 80 时,表示前 80 个格子已经填好,最后一个格子也填好了,此时就可以输出数独的解法了。
在函数 `dfs` 的实现中,当 `step` 大于 80 时,会输出数独的解法并返回,表示已经完成了数独的求解。因此,如果 `step` 没有到达 80,说明数独还没有全部填好,程序还在继续求解数独的过程中。可能是因为程序在搜索数独的解法时,出现了死循环或者搜索树被剪枝得太深,导致无法继续搜索下去,从而没有输出任何解法。建议在程序中加入一些调试信息,以便更好地定位问题所在。
相关问题
为什么这里的step最多到6
这段代码中的 `step` 是用来表示当前填空格子的编号,范围是从0到80,一共81个格子。当 `step` 等于 80 时,表示前 80 个格子已经填好,最后一个格子也填好了,此时就可以输出数独的解法了。
在函数 `dfs` 的实现中,当 `step` 大于 80 时,会输出数独的解法并返回,表示已经完成了数独的求解。因此,如果 `step` 没有到达 80,说明数独还没有全部填好,程序还在继续求解数独的过程中。
在这段代码中,`step` 的取值范围是从0到6,只有7个格子,因此只能求解一个不完整的数独。可能是因为程序在搜索数独的解法时,出现了死循环或者搜索树被剪枝得太深,导致无法继续搜索下去,从而没有输出任何解法。建议在程序中加入一些调试信息,以便更好地定位问题所在。
DiagramItem::DiagramItem(DiagramType diagramType, QMenu *contextMenu, QGraphicsItem *parent) : QGraphicsPolygonItem(parent), myDiagramType(diagramType) , myContextMenu(contextMenu) { QPainterPath path; switch (myDiagramType) { case StartEnd: path.moveTo(200, 50); path.arcTo(150, 0, 50, 50, 0, 90); path.arcTo(50, 0, 50, 50, 90, 90); path.arcTo(50, 50, 50, 50, 180, 90); path.arcTo(150, 50, 50, 50, 270, 90); path.lineTo(200, 25); myPolygon = path.toFillPolygon(); break; case Conditional: myPolygon << QPointF(-100, 0) << QPointF(0, 100) << QPointF(100, 0) << QPointF(0, -100) << QPointF(-100, 0); break; case Step: myPolygon << QPointF(-100, -100) << QPointF(100, -100) << QPointF(100, 100) << QPointF(-100, 100) << QPointF(-100, -100); break; default: myPolygon << QPointF(-120, -80) << QPointF(-70, 80) << QPointF(120, 80) << QPointF(70, -80) << QPointF(-120, -80); break; } setPolygon(myPolygon); setFlag(QGraphicsItem::ItemIsMovable, true); setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); }
这段代码是关于一个名为“DiagramItem”的类的构造函数的实现。它继承自QGraphicsPolygonItem类,并接受三个参数:diagramType表示图表类型,contextMenu表示上下文菜单,parent表示该图形项的父项。在构造函数中,根据图表类型来绘制不同形状的多边形,这里包括四种类型:StartEnd、Conditional、Step和默认。最后,设置了一些标志来使图形项可移动、可选择,并可以发送其几何变化。
阅读全文