`
Simone_chou
  • 浏览: 190237 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

蛇形填数(模拟)

    博客分类:
  • NYOJ
 
阅读更多

蛇形填数

时间限制:3000 ms  |  内存限制:65535 KB
难度:3
 
描述
在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:
10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
 
输入
直接输入方陈的维数,即n的值。(n<=100)
输出
输出结果是蛇形方陈。
样例输入
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;
}

 

 

分享到:
评论

相关推荐

    解题训练 蛇形矩阵.doc

    在填充过程中,使用四个循环来模拟蛇的四个移动方向:右、下、左、上。变量`t`用来跟踪当前填充的数字,`n`记录填充的次数,以便在所有位置填满后退出循环。最后,程序输出数组`u`的每一行,形成蛇形矩阵。 这个...

    C++经典编程题、、、、

    1. **方向控制:**对于蛇形填数和回转填数,需要控制填数的方向。 2. **边界判断:**在填数过程中要注意边界条件,避免越界。 3. **输出格式:**根据题目要求输出矩阵,注意行列之间的分隔符。 #### 题目7:文本...

    第十一届蓝桥杯大赛软件类省赛第二场C/C++大学B组

    3. **蛇形填数**:此题涉及矩阵的“蛇形”填充规律。需要找出第20行第20列的数字,可能需要理解矩阵填充的模式并进行数学推理。 4. **跑步锻炼**:这题要求计算从2000年1月1日到2020年10月1日小蓝额外跑步的总距离...

    acm编程比赛入门题目集.doc

    生成蛇形矩阵可以通过双指针方法实现,两个指针分别代表当前行和列,交替增加行和列,直到填满矩阵。在输出时,注意每行末尾不要多余的空格,相邻数字之间用一个空格分隔。 4. **青蛙的约会**: 这是一个数学概率...

    大一C语言实用函数整理50+

    18. 从左上角开始蛇形填入:可能是一种矩阵填充算法,需要根据一定的规则来填充矩阵。 19. Hanoi(汉诺塔):一个经典的递归问题,用于算法设计和思维训练。 20. 折半查找:也称二分查找,适用于已排序的数组或...

    综合练习题目-2016.docx

    在这个综合练习中,我们涉及了多个编程相关的知识点,包括蛇形数组填值、概率游戏分析、集合运算以及克鲁斯卡尔算法。下面将逐一详细解释这些概念和算法。 1. 蛇形数组填值: 蛇形数组是一种特殊的二维数组,元素...

    大学生acm竞赛——10年12月竞赛题库

    - 解决方案:使用二维数组a[][],根据蛇形路径的规律填入数字。对于每个位置(i, j),可以通过i和j的奇偶性确定当前是上行还是下行填充。 3. **最长回文子串**: - 题目描述:找到给定字符串中最长的回文子串。 -...

    ACM所有试题

    3. **行列控制:** 控制行和列的顺序,确保按蛇形路径正确填充矩阵。 4. **输出格式:** 按照题目要求的格式输出矩阵,注意控制行内元素之间的空格以及行尾不留空格。 **示例代码逻辑:** - 使用一个二维数组存储...

Global site tag (gtag.js) - Google Analytics