「java编程蛇形矩阵」c++蛇形矩阵

博主:adminadmin 2023-01-28 02:54:07 187

本篇文章给大家谈谈java编程蛇形矩阵,以及c++蛇形矩阵对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

ACM题目(倒蛇阵填数)求java解法

按照题目要求编写的倒蛇形矩阵的Java程序如下

import java.util.Scanner;

public class A {

 public static void main(String[] args) {

  int i,j,k,n,m,count=1;

  Scanner sc=new Scanner(System.in);

  int N=sc.nextInt();

  while(N!=0){

   if(N=10)

    System.out.println("请输入小于10的正整数");

   else{

    int a[][]=new int[N][N];

    if(N%2==0){

     n=N/2;

    }else{

     n=N/2+1;

    }

    for(i=n-1;i=0;i--){

     for(j=N-i-2;j=i+1;j--){

      a[i][j]=count++;

     }

     for(j=i;jN-i;j++){

      a[j][i]=count++;

     }

     k=N-i-1;

     for(j=i+1;jN-i;j++){

      a[k][j]=count++;

     }

     for(j=N-i-2;j=i;j--){

      a[j][k]=count++;

     }

    }

    for(i=0;iN;i++){

     for(j=0;jN;j++){

      System.out.printf("%-3d",a[i][j]);

     }

     System.out.println();

    }

    System.out.println();

   }

   N=sc.nextInt();

   count=1;

  }

 }

}

运行结果

JAVA语言的蛇形矩阵怎么弄求教? 最好带注视

Java

public class Snake {

public static void main(String args[]) {

int number = 16;

int[][] ary = show(number);

int length = (int) Math.sqrt(number);

for (int i = 0; i length; i++) {

for (int j = 0; j length; j++) {

System.out.print(ary[i][j] + "\t");

}

System.out.println();

}

}

public static int[][] show(int number) {

int sqrt = (int) Math.sqrt(number);

int[][] ary = new int[sqrt][sqrt];

int start = 1;

for (int i = 1; i 2 * sqrt; i++) {

if (i = sqrt) {

int startPoint = i - 1;

for (int j = 0; j i; j++) {

if (i % 2 == 1) {

ary[j][startPoint--] = start++;

} else {

ary[startPoint--][j] = start++;

}

}

} else {

int foot = sqrt - 1;

int footEnd = i - sqrt;

for (int k = 0; k 2 * sqrt - i; k++) {

if (i % 2 == 0) {

ary[foot--][footEnd++] = start++;

} else {

ary[footEnd++][foot--] = start++;

}

}

}

}

return ary;

}

}

以下蛇形矩阵用 "二维数组+循环" 打:

#includeiostream

using namespace std;

bool CreateMetrix(int *pMetrix,int n)

{

int i = 0, //数据元素

j = 0, //列号

k = 0;//行号

int iUp = 0,//上边界

iDown = n,//下边界

iLeft = 0,//左边界

iRight = n;//右边界

bool bRight = true,//左右填充方向

bDown = true;//上下填充方向

if (NULL == pMetrix)

{

return false;

}

memset(pMetrix,0,sizeof(int) * n*n);

//开始填充

for (i = 1; i = n*n; i++)

{

//首先向右填充

if (bRight)

{

if (j iRight)//还没有到达右边界

{

*(pMetrix + n * k + j) = i;

j++;

}

else

{

k++;//列号不变,增加行号,因为上面已经填充了对应行的列元素,故先将行号增加

if (k iDown)//还没有到最底端

{

*(pMetrix + n * k + (j - 1)) = i;//此处的j是目前列号加1,因为上面的判断条件所致

}

else

{

iRight--;//右边界列号减1

iDown--;//下边界行号减1

k--;//行号减1

j--;//列号减1

bRight = false;//已经走完一个折线,接下来是向左填充了

}

}

}

if (!bRight)//向左填充

{

if (j iLeft)//如果还没有到达左边界

{

j--;//在前面已经把第k行第j列元素填充了

*(pMetrix + n * k + j) = i;

}

else

{

k--;//第k行元素已经填充

if (k iUp)//还没有到达最顶部

{

*(pMetrix + n * k + j) = i;

}

else

{

iLeft++;//左边界加1

iUp++;//上边界加1

k++;//k已经减过头了

j++;//j也见过头了

i--;//这时候这个数据没有被填充,所以回退一个

bRight = true;//下面又要向右填充了

}

}

}

}

return true;

}

void OutPutMetrix(int *Src, int n)

{

int t = 0;

for (int i = 0; i n; i ++)

{

for (int j = 0; j n; j++)

{

t = *(Src + n*i + j);

cout "\t" t;

}

cout endl;

}

}

int main()

{

int *p = NULL;

int n = 2;

cout "输入矩阵的维度:" endl;

cin n;

if (n 0)

{

p = new int[n*n];

}else

{

cout "输入数字有误!\n本程序不能处理,再见!" endl;

return 0;

}

if (CreateMetrix(p,n))

{

OutPutMetrix(p, n);

}

else

{

cout "处理中出现错误,很抱歉。。。" endl;

}

delete p;

return 1;

}

PS:你们的作业吗?这个题有点难度哦

JAVA编程9. 蛇形矩阵:生成一个按蛇形方式排列自然数1,2,3,4,5,……,N2的 (1

你说的是这样的么?

1 2

3 4

1 2 6

3 5 7

4 8 9

1 2 6 7

3 5 8 13

4 9 12 14

10 11 15 16

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 2 6 7 15 16

3 5 8 14 17 26

4 9 13 18 25 27

10 12 19 24 28 33

11 20 23 29 32 34

21 22 30 31 35 36

……

java编程: 如何判断 二维数组 是否为蛇形矩阵?

先用下面的方法生个二维数组,再把你的跟他比较就行啦

public class SXjz {

/**

* @param args

*/

public static void main(String[] args) {

int g1[][]=getGrid(10);

for(int i=0;ig1.length;i++){

for(int j=0;jg1.length;j++){

System.out.print(g1[i][j]+" ");

}

System.out.println();

}

}

public static int[][] getGrid(int n)

{

int[][] array = new int[n][n];

int row = 0, col = 0, m = 1;

// 用于控制奇偶组,false表示偶组,true表示奇组

boolean isRow = false;

// i表示当前组的索引,从0开始

for (int i = 0; i (2 * n - 1); i++)

{

row = i;

while (row = ((i n) ? 0 : i - n + 1))

{

// 如果处理的是右下角表格中的数字,行或列最大不能超过n-1

if (row (n - 1))

row = n - 1;

col = i - row;

if (isRow)

array[row][col] = m;

else // 将row变成列,将col变成行

array[col][row] = m;

m++;

row--;

}

// 切换奇偶组

isRow = !isRow;

}

return array;

}

}

java编程蛇形矩阵的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c++蛇形矩阵、java编程蛇形矩阵的信息别忘了在本站进行查找喔。