zoukankan      html  css  js  c++  java
  • 蛇形填数

    描述:输入一个数字N(N>0)输出如下结果:

    例如:N=3

    1  2   3

    8   9   4

    7   6    5

    法一:

    package com.dmir.test;
    
    
    import java.util.Scanner;
    import java.util.logging.Logger;
    
    /**
     * Created by $wally on 2016/8/30.
     */
    public class Main {
    
        public static void main(String[] args) throws  Exception{
    
            Scanner cin=new Scanner(System.in);
            int n =cin.nextInt();
            int [][]array=new int[n][n];
    
            int x=0,y=0;//起始点
            int cnt=1;
            int lx=0,hx=n-1,ly=0,hy=n-1;//初始化边界
            int N=n*n;
            while(cnt<=N){
                while((y<=hy)&&(cnt<=N)){array[x][y]=cnt++;y++;}
                if(cnt>N) break;
                y--;x++;lx++;
    
                while((x<=hx)&&(cnt<=N)){array[x][y]=cnt++;x++;}
                if(cnt>N) break;
                x--;y--;hy--;
    
                while((y>=ly)&&(cnt<=N)){array[x][y]=cnt++;y--;}
                if(cnt>N) break;
                y++;x--;hx--;
    
                while((x>=lx)&&(cnt<=N)){array[x][y]=cnt++;x--;}
                if(cnt>N) break;
                x++;y++;ly++;
            }
    
            for(int i=0;i<n;++i){
                for(int j=0;j<n;++j){
                    System.out.print(array[i][j] + " ");
                }
                System.out.println();
            }
        }
    }

    法二:

    package com.dmir.test;
    
    
    import java.util.Scanner;
    
    /**
     * Created by $wally on 2016/8/30.
     */
    public class Test {
    
        public static void main(String[] args) throws  Exception{
    
            Scanner cin=new Scanner(System.in);
            int n =cin.nextInt();
            System.out.println(n);
    
            int [][]array=new int[n][n];
            for(int i=0;i<n;++i){
                for(int j=0;j<n;++j){
                    array[i][j]=0;
                }
            }
    
            int x=0,y=0;//起始点
            int cnt=2;
            int N=n*n;
            array[x][y]=1;
            while(cnt<=N){
                while((y+1<n)&&(array[x][y+1]==0)){array[x][++y]=cnt++;}
                while((x+1<n)&&(array[x+1][y]==0)){array[++x][y]=cnt++;}
                while((y-1>=0)&&(array[x][y-1]==0)){array[x][--y]=cnt++;}
                while((x-1>=0)&&(array[x-1][y]==0)){array[--x][y]=cnt++;}
            }
    
            for(int i=0;i<n;++i){
                for(int j=0;j<n;++j){
                    System.out.print(array[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    关于 __bridge
    关于loadView
    关于ViewDidUnload
    55. Jump Game(中等)
    54. Spiral Matrix(中等)
    48. Rotate Image(中等)
    34. Search for a Range
    18. 4Sum(中等)
    16. 3Sum Closest(中等)
    41. First Missing Positive(困难, 用到 counting sort 方法)
  • 原文地址:https://www.cnblogs.com/dmir/p/5831680.html
Copyright © 2011-2022 走看看