UESTC 1080 空心矩阵

这题理解题意最重要,千万不要理解错。题意是取矩阵的左上角,所以能切掉的都要切掉,是能形成三角形的形成三角形,不能的尽量割掉最大。代码借鉴了一位大牛的,如下:

#include<iostream>   

#include<cstdio>   

#include<cmath>   

  

using namespace std;      

  

int a[11][11];   

  

int main()   

{   

    int t,i,n,m,j;   

    scanf("%d",&t);   

    while(t--)   

    {   

        scanf("%d%d",&m,&n);   

        for(i=0;i<m;i++)   

        {   

            for(j=0;j<n;j++)   

            {   

                scanf("%d",&a[i][j]);   

            }   

        }   

        for(i=0;i<m&&i<n;i++)   

        {   

            for(j=0;j<n-i;j++)   

            {   

                cout<<a[i][j];   

            }   

            if(i!=0)   

            {   

                for(j=0;j<2*i-1;j++)   

                {   

                    cout<<" ";   

                }   

                cout<<a[i][n-i-1];   

            }   

            for(j=n-i-1;j>0;j--)   

            {   

                cout<<a[i][j-1];   

            }   

            cout<<endl;   

        }   

        for(i=i-2;i>=0;i--)   

        {   

            for(j=0;j<n-i;j++)   

            {   

                cout<<a[i][j];   

            }   

            if(i!=0)   

            {   

                for(j=0;j<2*i-1;j++)   

                {   

                    cout<<" ";   

                }   

                cout<<a[i][n-i-1];   

            }   

            for(j=n-i-1;j>0;j--)   

            {   

                cout<<a[i][j-1];   

            }   

            cout<<endl;   

        }   

        cout<<endl;   

           

    }   

    return 0;   

}   
View Code

 

你可能感兴趣的:(矩阵)