求对称闭包以及传递闭包

#include 
#include 
#define N 50
//求对称闭包以及传递闭包


int main()
{
    printf("请输入集合,以空格分隔,以 回车 + Ctrl + z 结束\n");
    int number[N];
    int n = 0;
    while(n<50)
    {
        if((scanf("%d",&number[n])!=EOF))
        {
//printf("%d\n",number[n]);
            n++;
        }
        else
            break;
    }
    int R[n][n];//关系矩阵
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            R[i][j] = 0;//关系矩阵初始化
        }
    }
    printf("请输入关系的个数\n");
    int k = 0;
    scanf("%d",&k);
    printf("请输入具有关系的两个数以,分隔,回车输入下一组\n");
    for (int i=0; i<k; i++)
    {
        int number1,number2;
        scanf("%d,%d",&number1,&number2);
        for (int j=0; j<n; j++)
        {
            for (int m =0 ; m<n; m++)
                if (number1==number[j]&&number2==number[m])
                {
                    R[j][m]=1;
                }
        }
    }
    printf("输入的关系矩阵为:\n");
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            printf("%3d",R[i][j]);
        }
        printf("\n");
    }
    //关系矩阵创建完毕
    int r[n][n];
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            r[j][i]=0;
        }
    }
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            if(R[i][j]==1)
            {
                r[j][i]=1;
                r[i][j]=1;
            }
        }
    }
    printf("对称闭包矩阵为:\n");
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<n; j++)
        {
            printf("%3d",r[i][j]);
        }
        printf("\n");
    }
    printf("传递闭包矩阵为:\n");
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
        {
            if(R[i][j]==1)
            {
                for(int k=0; k<n; k++)
                {
                    if(R[j][k]==1)
                        R[i][k]=1;
                }
            }
        }
        for (int i=0;i<n;i++)
        {
            for (int j=0;j<n;j++)
            {
                printf("%3d",R[i][j]);
            }
            printf("\n");
        }


    return 0;
}

你可能感兴趣的:(c语言)