题解 | #蛇形矩阵#

蛇形矩阵

http://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e

思路:创建一个n*n的矩阵,按照第一层一个数,第二层两个数,第n层n个数依次填充。然后把第2-n列的低层的0移动到高层即可。最后遍历矩阵,打印非零数。

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { // 注意 while 处理多个 case
             int n = in.nextInt();
            int arr[][] = new int[n][n];
            int count = 0;
            for(int i  = 0;i<n;++i){
                for(int j = 0;j<=i;++j){
                    arr[j][i] = ++count;
                }
            }
            for(int i = 0 ;i<n;++i){
                int zerocount = 0;
                int index = 0;
                for(int j =0;j<n;++j){
                    if(arr[i][j]==0){
                        zerocount++;
                    }
                    else arr[i][index++] = arr[i][j];
                    if(j>=n-zerocount) arr[i][j] = 0;
                }
            }
            for(int i =0;i<n;++i){
                for(int j = 0;j<n;++j){
                    if(arr[i][j]!=0)
                        System.out.print(arr[j][i]+" ");
                    else break;
                }
            System.out.println();
         }
        }
       
    }
}
全部评论

相关推荐

许愿一个offer_...:不是啊,这个只代表你的面试官提交了你的面评,面试是否通过还是要看官网状态呢
腾讯2025实习生招聘
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务