xdoj图形对称性判断

来自这位博主,稍加改动

XDOJ470.图形对称性判断-CSDN博客文章浏览阅读789次,点赞15次,收藏19次。输出一个或多个整数,表示该方阵对应图形的对称性:1代表水平对称,2代表垂直对称,3代表对角对称(即以左上到右下的线为对称轴),4代表反对角对称(即以右上到左下的线为对称轴),5代表旋转对称(即以中心位置为轴旋转180°后与原图形重合)。请编写五个函数checkHorSym,checkVerSym,checkDiaSym,checkAntiDiaSym,checkRotSym分别判断方阵的水平对称性、垂直对称性、对角对称性、反对角对称性、旋转对称性。输入的第一行包含一个整数n,表示方阵维度,方阵为nxn维。https://blog.csdn.net/yonpiguxiao/article/details/135142116

int checkHorSym(char** pA, int n)
{
    for (int i = 0; i < n; i++)           //判断每行是否对称
    {
         for (int j = 0; j < n; j++)
        {
            if (pA[i][j] != pA[i][n-1-j])
            {
                return 0;
            }
        }
    }
    return 1;
}
int checkVerSym(char** pA, int n)      //判断每列是否对称
{
    for (int i = 0; i < n / 2; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (pA[i][j] != pA[n - 1 - i][j])
            {
                return 0;
            }
        }
    }
    return 1;
}
int checkDiaSym(char** pA, int n)     //判断左对角线是否对称
{
    for (int i = 1; i < n; i++)
    {
        for (int j = i - 1; j < n; j++)
        {
            if (pA[i][j] != pA[j][i])
            {
                return 0;
            }
        }
    }
    return 1;
}
int checkAntiDiaSym(char** pA, int n)     //判断左对角线是否对称
{
{
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            if (pA[i][j] != pA[n - 1 - j][n - 1 - i])
            {
                return 0;
            }
        }
    }
    return 1;
}
int checkRotSym(char** pA, int n)     //判断旋转后是否对称
{
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (pA[i][j] != pA[n - 1 - i][n - 1 - j])
            {
                return 0;
            }
        }
    }
    return 1;
}

你可能感兴趣的:(xdoj指针,算法,数据结构,c++,c语言)