NxN井字棋左上到右下对角线胜负判断实现及代码错误排查
问题根因
你编写的代码存在两个核心逻辑错误:
- 提前终止循环:只要遍历到第一行的对角线元素就直接返回结果,完全没有检查后续所有行的对角线位置。你给出的测试用例中,第一行第一列是
X,直接命中else分支返回True,完全没有检查第二行第二列的空位,导致误判。 - 列索引自增逻辑错误:你把
columncount的自增放在了匹配失败的分支中,即使能走到后续循环,也无法正确对应到下一行的对角线坐标(左上到右下对角线的坐标应为(i,i),行索引和列索引是同步增长的)。
修正后代码
# 测试用例 cur = [['X',' '],[' ',' ']] player= 'X' def check_down_diag(cur, player): col_idx = 0 for row in cur: # 只要有一个对角线位置不匹配,直接返回失败 if row[col_idx] != player: return False # 列索引同步自增,匹配下一行的对角线位置 col_idx += 1 # 所有对角线位置都匹配,返回成功 return True # 测试输出 print(check_down_diag(cur, player)) # 输出False,符合预期
适配说明
- 无需硬编码任何棋盘尺寸参数,自动适配任意NxN规格的井字棋棋盘
- 时间复杂度为O(N),只需遍历N个对角线元素即可得出结果,中途发现不匹配直接终止,无需遍历全棋盘
内容的提问来源于stack exchange,提问作者spaced
相关产品推荐
相关产品推荐

