求助:将棋盘麦粒问题的单循环代码改写为嵌套双循环
棋盘麦粒问题:嵌套双循环实现方案
你已经用单循环完成了棋盘麦粒的计算,改成嵌套双循环其实很直接——外层循环遍历每一行,内层循环遍历当前行的每一列,同时沿用单循环里的麦粒数累加逻辑即可。
核心思路
单循环里的i是所有格子的线性索引(从0到n²-1),对应到双循环中,就是**(行号-1)*每行格子数n + (列号-1)**。不过不用特意计算这个索引,直接保持grains的递增节奏:每遍历一个格子,就把当前麦粒数加到总数里,然后麦粒数翻倍,和单循环的逻辑完全对齐。
嵌套双循环代码实现
grains = 1 total = 0 n = int(input("How many squares are on one side of your chessboard?: ")) # 外层循环遍历行,从1到n for row in range(1, n+1): # 内层循环遍历当前行的列,从1到n for col in range(1, n+1): total += grains print("row", row, "column", col, "has", grains, "grains of wheat.") grains *= 2 print("There are", total, "grains of wheat.")
和单循环的对应关系
对比你提供的单循环代码:
- 单循环里的
int(i/n)+1就是双循环的row - 单循环里的
(i%n)+1就是双循环的col grains的更新和总数累加逻辑完全一致,只是把线性遍历拆成了行和列的嵌套遍历
这样输出的格式和内容会和你原来的单循环版本完全相同,同时满足嵌套双循环的要求。
内容的提问来源于stack exchange,提问作者kayjoneill
相关产品推荐
相关产品推荐

