IOS面试算法题(3)——螺旋矩阵



//
//  main.c
//  螺旋矩阵
//
//  Created by qianfeng on 15/12/17.
//  Copyright (c) 2015年 cuixuerui. All rights reserved.
//

#include <stdio.h>
#include <stdlib.h>
/*
 输入两个整数,第一个数决定一个n*n的矩阵,第二个数决定从1开始赋值,赋值的上限。
 比如:
 输入:5 18
 输出:
  1  2  3  4  5
 16 17 18  0  6
 15  0  0  0  7
 14  0  0  0  8
 13 12 11 10  9
 
 
 说明:
 
 此矩阵中, 关键在于何时改变方向和怎么改变方向

  */
int main(int argc, const char * argv[]) {
    
    int n,num;
    int a[100][100];
    
    for (int i=0; i<100; i++) {
        for (int j=0; j<100; j++) {
            a[i][j]=0;
        }
    }
    scanf("%d%d",&n,&num);
    
   
    int temp=0;
    int count=n;
    int temp1=0;
    for (int i=1; i<=num;) {
        
        for (int j=temp; j<count; j++) {
            a[temp][j]=i++;
        }
        temp=temp+1;
        count=count-1;
        
        for (int j=temp ; j<count+1; j++) {
            a[j][count]=i++;
        }
        for (int j=count-1; j>=temp-1; j--) {
            a[count][j]=i++;
        }
        for (int j=count-1; j>=temp; j--) {
            a[j][temp1]=i++;
        }
        temp1=temp1+1;
    
    }
    
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            
             printf("%02d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}


你可能感兴趣的:(二维数组,算法,螺旋矩阵)