zoukankan      html  css  js  c++  java
  • 蛇形矩阵

    题目:这个蛇形方阵大家都知道吧?不知道就看下面的矩阵找规律

    蛇形方阵

    【问题描述】

    输入n,n≤100。输出n阶蛇形方阵。例如n=5时,输出如下:

    1        2        6        7       15

     3        5        8       14       16

     4        9       13       17       22

    10       12       18       21       23

    11       19       20       24       25

    算法:

    1、那个先说一下,最近学了STL库的动态数组,是用这个编的(STL动态数组vector),有一些句子可以用后面注释着的替换,请各位原谅。

    2、本算法就是纯模拟,没有用任何优化,各路高手请勿吐槽。

    3、其实这个东西用心还是能找到规律的,当x、y坐标都为奇数或都为偶数时,往↗右上走,撞墙就往右或下走;

    当x、y坐标一奇一偶时,往↙左下走,撞墙就往下或右走;(右或下 和 下或右是不一样的,右或下是不能右再下,反之亦然)

    标程:

    #include<bits/stdc++.h>
    using namespace std;
    int i,j,zi,n;
    int main()
    {
        scanf("%d",&n);
        vector<vector<int> >a;//就是定义一个数组a,可以写为:int a[10000][100000];
        a.resize(n);//这个要是用int a[][]定义,就不要了。
        for (i=0;i<n;i++)a[i].resize(n);//这个要是用int a[][]定义,就不要了。
        i=0;j=0;zi=0;
        while(zi<n*n)
        {
            zi++;
            a[i][j]=zi;
            if ((i%2==0&&j%2==0)||(i%2==1&&j%2==1))
            {
                if (j!=n-1)
                {
                    i-=1;
                    j+=1;
                }
                else
                {
                    i+=1;
                }
            }
            else
            if (((i%2==0)&&(j%2==1))||((i%2==1)&&(j%2==0)))
            {
                if (i!=n-1)
                {
                    i+=1;
                    j-=1;
                }
                else
                {
                    j+=1;
                }
            }
            if(i<0)i=0;
            if (j<0)j=0;
        }
        for (i=0;i<n;i++)
        {
            for (j=0;j<n;j++)
            {
                cout<<setw(5)<<a[i][j];//场宽输出,这个就是输出那个数,不足补空格
            }
            cout<<endl;
        }
        return 0;
    }

  • 相关阅读:
    Net包管理NuGet(3)搭建私服及引用私服的包
    MyMql 下载以及配置
    Oracle 环境部署 以及数据库创建 ,用户新建和权限分配
    VUE.JS 环境配置
    .NET WEB API 简单搭建
    C# Timer 定时任务
    RemoTing 搭建简单实现
    MVC+EF三层+抽象工厂
    ASP.NET MVC SignalR 简单聊天推送笔记
    .net Mvc Dapper 方法封装
  • 原文地址:https://www.cnblogs.com/leonqqs/p/7470724.html
Copyright © 2011-2022 走看看