`
郑云飞
  • 浏览: 818262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

任意形状的顺时针环绕的蛇形矩阵

J# 
阅读更多
/*作者:郑云飞
*创建日期:2010年6月16日下午17:51
*内容:任意行和列的顺时针蛇形矩阵 
*/
import java.io.*;
public class snake3
{
 public static void main(String[] args) throws IOException
 {
  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  System.out.println("请输入蛇形矩阵的行数:");
  String str=br.readLine();
  System.out.println("请输入蛇形矩阵的列数:");
  String str1=br.readLine();
  int m=Integer.parseInt(str);//输入的行数
  int n=Integer.parseInt(str1);//输入的列数
  int k=1;//声明一个累加器
  int [][]a=new int [m][n];//声明一个二维数组
  for(int i=0;i<min(m,n)/2;i++)//控制蛇形矩阵的环绕的圈数
  {
   for(int j=i;j<n-i;j++)//遍历最上面一行
    a[i][j]=k++;//为最上面一行赋值
   for(int j=i+1;j<m-i;j++)//遍历最右边一行
    a[j][n-i-1]=k++;//为最右边一行赋值
   for(int j=n-i-2;j>=i;j--)//遍历最下边一行
    a[m-i-1][j]=k++;//为最下边一行赋值
   for(int j=m-i-2;j>i;j--)//遍历最左边一样
    a[j][i]=k++;//为最左边一行赋值
  }
     if(min(m,n)%2==1)//如果输入的值有基数
   a[min(m,n)/2][min(m,n)/2]=k++;//为最后一圈开始的一个数赋值
     /*此时如果不写下面的代码,通过运行结果可以得知,最后面还有Math.abs(m-n)个连续的数还没有赋值
      * */
     if(m==min(m,n))//如果行数小于列数 为最后一圈那一行的Math.abs(m-n)个连续的数赋值
     {
      for(int i=0;i<Math.abs(m-n);i++)//控制赋值的个数
      {
       a[min(m,n)/2][min(m,n)/2+i+1]=k++;//为没可有赋值的数赋值
      }
     }
     if(n==min(m,n))//如果列数小于行数,那么就为最后一圈那一列的Math.abs(m-n)个连续的数赋值
     {
      for(int i=0;i<Math.abs(m-n);i++)//控制赋值的个数
      {
       a[min(m,n)/2+i+1][min(m,n)/2]=k++;//为没有赋值的数赋值
      }
     }
  for(int i=0;i<m;i++)//输出结果
  {
   for(int j=0;j<n;j++)
   {
    System.out.print(a[i][j]+"\t");
   }
   System.out.println();
  }

 }
 public static int min(int a,int b)//定义一个求最小值的方法
 {
  return a<b?a:b;
 }
}

 

分享到:
评论

相关推荐

    螺旋蛇形矩阵

    通常,这种矩阵的填充方式是从左上角开始,按照顺时针或逆时针方向螺旋式地填充数字。在本例中,用户输入一个整数N,程序将生成一个N阶的逆时针螺旋蛇形矩阵。 首先,我们需要理解如何生成这样的矩阵。我们可以将其...

    基于傅立叶轮廓表征的任意形状文本检测.pptx

    "基于傅立叶轮廓表征的任意形状文本检测" 基于傅立叶轮廓表征的任意形状文本检测是计算机视觉和自然语言处理领域中的一个热门研究方向。本节课将结合CVPR 2021的最新研究成果,详细介绍基于傅立叶轮廓表征的任意...

    n阶矩阵顺时针逆时针蛇形输出源代码

    n阶矩阵顺时针逆时针蛇形输出源代码 本文将对给定的源代码进行分析,并从中提取出相关的知识点,包括C语言的循环语句、嵌套定义、矩阵的顺时针逆时针蛇形输出等。 知识点1:C语言的循环语句 在给定的源代码中,...

    PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析

    回环矩阵,又称为环绕矩阵,其元素填充遵循上、右、下、左的顺序,但当到达边界时会环绕回转。例如,当向右移动到边界时,会向下移动,接着是向左移动,最后向上移动,形成一个闭合的环。在PHP中,可以通过计算每层...

    顺时针打印矩阵

    顺时针打印矩阵 输入一个矩阵,按照从外到里以顺时针的顺序依次打印出每一个数字。 例如:左图矩阵,按顺时针打印出的结果是:1、2、3、4、8、12、16、15、14、13、9、5、6、7、8、12、11、10 要求: 高效 分析时空...

    顺时针打印矩阵.md

    顺时针打印矩阵.md

    顺时针打印矩阵1

    顺时针打印矩阵是一种常见的编程问题,主要出现在算法和数据结构的学习中,例如在LeetCode等在线编程平台上的题目。这个问题的目标是给定一个二维矩阵,按照顺时针方向从外向内依次打印矩阵中的所有元素。这个问题...

    c语言矩阵顺时针顺序排列

    c语言矩阵顺时针顺序排列 任意输入均可满足 详细解释

    java基础面试题顺时针打印矩阵

    java基础面试题顺时针打印矩阵本资源系百度网盘分享地址

    顺时针打印二维数组中的元素

    二维数组通常用于表示表格或矩阵,其定义格式为`类型 名称[行数][列数]`,如`int arr[3][4];`定义了一个3行4列的二维整数数组。 2. **指针**:指针是C语言中的重要概念,它存储了一个变量的内存地址。对于二维数组...

    python-剑指offer第19题顺时针打印矩阵

    python python_剑指offer第19题顺时针打印矩阵

    java实现顺时针打印矩阵

    在编程领域中,处理矩阵的操作十分常见,其中顺时针打印矩阵则是一种常见的算法问题。Java作为一种广泛使用的编程语言,提供了丰富的接口和方法来实现这一功能。本文将详细介绍如何用Java实现顺时针打印矩阵的算法,...

    Java顺时针打印矩阵

    Java 顺时针打印矩阵 Java 顺时针打印矩阵是一种常见的算法问题,要求从外向里以顺时针的顺序依次打印出每一个数字。例如,输入一个矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1、2、3、4...

    螺旋阵,请设计算法完成螺旋阵的输出,具有要求为:输入一个m行n列的矩阵,按顺时针螺旋顺序输出矩阵中的所有元素

    请设计算法完成螺旋阵的输出,具有要求为:输入一个m行n列的矩阵,按顺时针螺旋顺序输出矩阵中的所有元素。 【输入】 第1行输入两个正整数m和n,表示m行n列的矩阵; 从第2行开始按行输入该矩阵的所有元素。 【输出】...

    任意多边形点串顺序判断

    - 适用于任意形状的多边形,包括凹多边形和自相交多边形。 - 计算效率较高,时间复杂度为O(n),其中n为多边形的顶点数量。 **局限性**: - 对于非常大的多边形,可能受到浮点运算精度的影响。 - 当多边形退化为一条...

    java编程题之顺时针打印矩阵

    java编程题之顺时针打印矩阵 java编程题之顺时针打印矩阵是java编程中的一个经典问题,旨在打印一个矩阵中的所有元素,以顺时针方向进行循环打印。下面是关于java编程题之顺时针打印矩阵的知识点总结: 一、问题...

    python实现顺时针打印矩阵

    面试题之顺时针打印矩阵,Python实现,供大家参考,具体内容如下 问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵:   则依次打印出数字1,2,3,4,8,12,16,15,14,13,...

    golang顺时针打印矩阵的方法示例

    ### Golang 顺时针打印矩阵方法详解 #### 背景介绍 在计算机科学领域,数组和矩阵...这种方法不仅适用于任意大小的正方形或矩形矩阵,而且易于理解和实现。希望这篇文章能够帮助大家更好地理解这一问题的解决思路。

    Matlab实现的 数字积分法DDA实现任意圆弧插补,圆弧可跨象限,圆心任意设定,可顺时针可逆时针,插补的步长可选

    通过数字积分法DDA实现任意圆弧插补,圆弧可跨象限,圆心任意设定,可顺时针可逆时针,插补的步长可选,例如1、0.1、0.01 matlab代码,带注释

Global site tag (gtag.js) - Google Analytics