面试题20 顺时针打印矩阵

#include<cstdio>
#include<iostream>
using namespace std;

int a[100][100];
int l,r,t,b;
int n,m;

void solve()
{
    l = 0 , r = m-1 , t = 0 , b = n - 1;
    int i,j;
    while( t <= b || l <= r )
    {
        if( t <= b )
        {
            i = t++ , j = l ;
            while( j <= r ) printf(" %d",a[i][j++]);
        }
        if( r >= l )
        {
            i = t ; j = r--;
            while( i <= b ) printf(" %d",a[i++][j]);
        }
        if( b >= t )
        {
            i = b-- , j = r ;
            while( j >= l ) printf(" %d",a[i][j--]);
        }
        if( r >= l )
        {
            i = b , j = l++;
            while( i >= t ) printf(" %d",a[i--][j]);
        }
    }
    printf("\n");
}

int main()
{
    freopen("in.txt","r",stdin);
    while( ~scanf("%d%d" , &n , &m ) )
    {
        memset( a , 0 , sizeof(a) );
        int i,j;
        for( i = 0 ; i < n ; i++ )
            for( j = 0 ; j < m ; j++ )
                scanf("%d",&a[i][j]);
        solve();
    }
    return 0;
}

 

posted @ 2015-05-17 21:19  crazyzhping  阅读(155)  评论(0)    收藏  举报