蛇形填数
时间限制:3000 ms | 内存限制:65535 KB
难度:3
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
3
7 8 1 6 9 2 5 4 3
思路:
模拟。
AC:
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; int num[105][105]; int main () { int n, x, y; int ans = 1; scanf("%d", &n); memset(num, -1, sizeof(num)); num[1][n] = ans; x = 1, y = n; while (ans != n * n) { while((x + 1) <= n && num[x + 1][y] == -1) num[++x][y] = ++ans; while((y - 1) >= 1 && num[x][y - 1] == -1) num[x][--y] = ++ans; while((x - 1) >= 1 && num[x - 1][y] == -1) num[--x][y] = ++ans; while((y + 1) <= n && num[x][y + 1] == -1) num[x][++y] = ++ans; } for (int i = 1; i <= n; ++i) { printf("%d", num[i][1]); for (int j = 2; j <= n; ++j) printf(" %d", num[i][j]); printf("\n"); } return 0; }
相关推荐
在填充过程中,使用四个循环来模拟蛇的四个移动方向:右、下、左、上。变量`t`用来跟踪当前填充的数字,`n`记录填充的次数,以便在所有位置填满后退出循环。最后,程序输出数组`u`的每一行,形成蛇形矩阵。 这个...
1. **方向控制:**对于蛇形填数和回转填数,需要控制填数的方向。 2. **边界判断:**在填数过程中要注意边界条件,避免越界。 3. **输出格式:**根据题目要求输出矩阵,注意行列之间的分隔符。 #### 题目7:文本...
3. **蛇形填数**:此题涉及矩阵的“蛇形”填充规律。需要找出第20行第20列的数字,可能需要理解矩阵填充的模式并进行数学推理。 4. **跑步锻炼**:这题要求计算从2000年1月1日到2020年10月1日小蓝额外跑步的总距离...
生成蛇形矩阵可以通过双指针方法实现,两个指针分别代表当前行和列,交替增加行和列,直到填满矩阵。在输出时,注意每行末尾不要多余的空格,相邻数字之间用一个空格分隔。 4. **青蛙的约会**: 这是一个数学概率...
18. 从左上角开始蛇形填入:可能是一种矩阵填充算法,需要根据一定的规则来填充矩阵。 19. Hanoi(汉诺塔):一个经典的递归问题,用于算法设计和思维训练。 20. 折半查找:也称二分查找,适用于已排序的数组或...
在这个综合练习中,我们涉及了多个编程相关的知识点,包括蛇形数组填值、概率游戏分析、集合运算以及克鲁斯卡尔算法。下面将逐一详细解释这些概念和算法。 1. 蛇形数组填值: 蛇形数组是一种特殊的二维数组,元素...
- 解决方案:使用二维数组a[][],根据蛇形路径的规律填入数字。对于每个位置(i, j),可以通过i和j的奇偶性确定当前是上行还是下行填充。 3. **最长回文子串**: - 题目描述:找到给定字符串中最长的回文子串。 -...
3. **行列控制:** 控制行和列的顺序,确保按蛇形路径正确填充矩阵。 4. **输出格式:** 按照题目要求的格式输出矩阵,注意控制行内元素之间的空格以及行尾不留空格。 **示例代码逻辑:** - 使用一个二维数组存储...