当前位置 : 主页 > 编程语言 > c++ >

三种方法求顺时针螺旋方阵

来源:互联网 收集:自由互联 发布时间:2021-06-30
gistfile1.txt import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()) { int n = sc.nextInt(); int[][] arr1=new int[n][n]; funny1(arr1); //funny2(arr1); //fun
gistfile1.txt
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()) {
            int n = sc.nextInt();
            int[][] arr1=new int[n][n];

            funny1(arr1);
            //funny2(arr1);
            //funny3(arr1);

            for(int i=0;i
 
  i;j--){
                if(a[n-i-1][j] ==0)
                    a[n-i-1][j] = m++;
            }
            //向上
            for(j=n-i-1;j>i;j--){
                if(a[j][i] ==0)
                    a[j][i] = m++;
            }
        }
        if(n%2==1)
            a[n/2][n/2]=m;
    }
    public static void funny2(int[][] A){
        //两个对角线分成四个区域,分为上下左右
        int n=A[0].length;
        A[0][0]=1;

        //沿对角线自左上到方阵中心的值
        for(int i=0;i
  
   =0;i--){ for(int j=n-i-1;j
   
    n/2;i--){ for(int j=i;j>n-i-1;j--){ A[i][j-1]=A[i][j]+1; } } //左,向上递增 for(int i=0;i
    
     i+1;j--){ A[j-1][i]=A[j][i]+1; } } //处理输入的值为偶数的情况 if(n%2==0){ A[n/2][n/2-1]=n*n; } } public static void funny3(int[][] data){ //看成封闭的贪吃蛇游戏,左上角进入,路过的地方赋值,顺时针不断转圈,最后填满屏幕 //两个转向条件:碰到屏幕边缘;碰到自身,即若不转向,会覆盖原来赋值过的地方 int x = -1, y = 0, cur = 0; int count=data[0].length; int max=count*count; while (cur < max) { for (; x + 1 < count && data[x + 1][y] == 0; data[y][++x] = ++cur);//向右 for (; y + 1 < count && data[x][y + 1] == 0; data[++y][x] = ++cur);//向下 for (; x - 1 >= 0 && data[y][x - 1] == 0; data[y][--x] = ++cur);//向左 for (; y - 1 >= 0 && data[y - 1][x] == 0; data[--y][x] = ++cur);//向上 } } }
    
   
  
 
网友评论