蛇形输出

int main(int argc, const char * argv[])
{

    int n,m;
    scanf("%d%d",&n,&m);
    int x = 0,y = 0;
    int a = n-1,b = n-1,c = 0,d = 0;
    int st[n][n];
    int ward = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            st[i][j] = 0;        }
    }
    for (int i = 1; i <= m; i++) {
        if (ward == 5) {
            ward = 1;
        }
        if (ward == 1) {
            st[x][y] = i;
//            printf("%d ",st[x][y]);
            if (y == a) {
                ward++;
                c++;
                x = c;
                continue;
            }else{
                y++;
            }
        }
        if (ward == 2) {
            st[x][y] = i;
            if (x == b) {
                ward++;
                a--;
                y = a;
                continue;
            }else{
                x++;
            }
        }
        if (ward == 3) {
            st[x][y] = i;
            if (y == d) {
                ward++;
                b--;
                x = b;
                continue;
            }else{
                y--;
            }
        }
        if (ward == 4) {
            st[x][y] = i;
            if (x == c) {
                ward++;
                d++;
                y = d;
                continue;
            }else{
                x--;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            printf("%-3d ",st[i][j]);
        }
        printf("\n");
    }
    return 0;
}
时间: 2024-10-12 16:43:14

蛇形输出的相关文章

Java蛇形数组的简单实现代码

上周五和朋友聊天谈到个蛇形数组的java实现办法,命题是:假设一个二维数组宽w高h,从1开始蛇形输出. int[][] numberMatric = new int[w][h]; 当时午睡过头脑袋不清醒,愣是没有好的思路.后来晚上研究了下,发现一种比较简单的实现办法.核心思路是: 找准移动方向,按移动顺序递增填充二维数组. 比较简单的实现办法如下: private void snakeMatric(int w, int h){ int x,y;//x,y坐标. int[][] numberMat

[LeetCode]题解(python):054-Spiral Matrix

题目来源 https://leetcode.com/problems/spiral-matrix/ Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. 题意分析 Input: a matrix Output: a list Conditions: 蛇形输出 题目思路 自己本来在想有没有一些不一样的算法,然后发现直接右下左上顺序做就好了,看到

eden破解密文

题目名称 破解密文 题目描述 题目大意:Mo and Larry have devised a way of encrypting messages. They first decide secretly on the number of columns and write the message (letters only) down the columns, padding with extra random letters so as to make a rectangular array

解决成本的错误和问题

问题描述 错误 数据收集 根本原因 版本   组件:数据修复           在一个实际成本组织中,(平均,先进先出,后进先出) 一个或更 多的以下情况可能发生: 1.导航到物料成本历史表单上的数量信息,与现有量表单的数量不匹配的记录 2. 一些物料前期已计成本的数量与前面的事务处理历史表单的数量不匹配 3. 所有的库存值报表与事务处理值报表不匹配 4. 存货层次成本更新表单的总数量与现有量数量表单不匹配(仅仅在先进先出/后进先出) 5.这些症状的任何一个意味着 MMT-CQL不匹配或MMT

Java编码 蛇形矩阵的构建与遍历输出

一.蛇形矩阵的构建,并按行输出 例: 输入:n, 生成n*n的蛇形矩阵 1 2 3 8 9 4 7 6 5 输出:1 2 3 8 9 4 7 6 5 java编码 public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); if(n < 0) return; if(n == 1){ Sys

梦工厂实验室 蛇形填数 dfs

问题 D: 蛇形填数 时间限制: 3 Sec  内存限制: 64 MB提交: 28  解决: 5[提交][状态][讨论版] 题目描述 在n*n方阵里填入1,2,...,n*n,要求填成蛇形.例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4 输入 直接输入方阵的维数,即n的值.(n<=100) 输出 输出结果是蛇形方阵. 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3 一类题型.四个方向dfs,当走不通时,t++改变方向,否则一直往一个方向走.

蛇形矩阵

如上图所示,是一个4*4的蛇形矩阵 算法思路 由图可观察到该矩阵可分为上三角和下三角.每个三角要根据蛇形的奇偶行进行计数. 算法代码 #include <stdio.h> int main() { int a[10][10]; int n; printf("Input n:"); scanf("%d",&n); int i=0,j=0,k=0; int count=1; for(i=0;i<n;i++)/*上三角 i代表是蛇形的奇偶行*/

【基础题】蛇形填数

题目描述 在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 先说一下我的思路,我把n=4时的情况列了出来,发现了奇数时,j变化,偶数时,i变化等变化规律,后来我发现需要总结很多变化规律才能算数来,总结出了n=4的,n=5时又不一样了,哎,头疼(小白的思

每日一练第7天:蛇形填数

蛇形填数.在n×n方阵里填入1,2,...,n×n,要求填成蛇形. 例如,n=4时方阵为: 10 11 12  1 9 16 13  2 8 15 14  3 7   6   5  4 解决此题的一个重要原则就是先判断下一个要填的位置是否满足条件,再填数.不是发现了不能填再退回来. 代码如下: 1 #include <stdio.h> 2 #include <string.h> 3 #define MAXN 100 4 int matrix[MAXN][MAXN]; 5 6 int