本文共 1252 字,大约阅读时间需要 4 分钟。
当我们需要在一个n×n的二维数组中填充1时,常用的方法之一是采用蛇形填充的方式。这种方法可以确保数据按照特定规则逐步填充,避免越界错误,并且代码逻辑清晰易懂。
下面是一个典型的实现代码示例:
#include#include #include #define maxn 20using namespace std;int a[maxn][maxn];int main() { int n, x, y, tot = 0; cin >> n; memset(a, 0, sizeof(a)); tot = a[x=0][y=n-1] = 1; while (tot < n * n) { // 向右移动 while (x + 1 < n && !a[x+1][y]) a[++x][y] = ++tot; // 向左移动 while (y - 1 >= 0 && !a[x][y-1]) a[x][--y] = ++tot; // 向上移动 while (x - 1 >= 0 && !a[x-1][y]) a[--x][y] = ++tot; // 向下移动 while (y + 1 < n && !a[x][y+1]) a[x][++y] = ++tot; }}
初始设置:首先读取输入n,初始化二维数组a为全零,并将起始位置a[0][n-1]设为1,标记为已填充。
填充循环:当填充的总数tot小于n²时,进入填充循环。
向右移动:从当前位置向右检查是否越界,并继续向右移动,直到遇到已经填充的数值或边界。
向左移动:向左检查并填充,直到遇到已填充的数或边界。
向上移动:向上检查并填充,直到遇到已填充的数或边界。
向下移动:向下检查并填充,直到遇到已填充的数或边界。
这种方法确保了每次移动都检查边界和已填充的位置,从而避免越界错误,同时保证了填充顺序的正确性。
移除不必要的注释:代码中有多处注释,建议根据实际需要保留关键注释,简化代码结构。
简化变量命名:变量命名应简洁明了,避免使用复杂的变量名,提高代码可读性。
优化代码格式:确保代码的缩进和格式统一,避免混乱。
添加注释:在关键逻辑部分添加注释,帮助读者快速理解代码功能。
检查代码可靠性:通过测试和调试,确保代码在不同n值下都能正常运行,避免潜在的逻辑错误。
通过以上优化,代码结构更清晰,逻辑更简洁,适合用于教学和实际开发中。这种蛇形填充方式不仅保证了代码的正确性,还能提升代码的可读性和可维护性。
转载地址:http://cqdr.baihongyu.com/