couting transitive relation

来源:互联网 发布:高性能网络讲什么意思 编辑:程序博客网 时间:2024/05/16 19:35

 

一个计算Transitive relation个数的程序。

目前,只能计算到1--5.

等有空了,对程序扩充。

 

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int checkTransitive(int num, int* bit, int nSize)
{
    for(int i = 0; i < nSize; i++)
        for(int j = 0; j < nSize; j++)
            for(int k=0; k< nSize; k++)
            {
                int xy=num & bit[i*nSize+j];
                int yz=num & bit[j*nSize+k];
                int xz=num & bit[i*nSize+k];

                if(xy && yz)
                {
                    if (!xz)
                    {
                        return 0;
                    }
                }
            }

    return 1;

}

int main()
{
    int nSize=5;

    int* bit = (int*)malloc(sizeof(int)*nSize*nSize);

    bit[0]=1;
    for(int i = 1; i < nSize*nSize; i++)
    {
        bit[i]=bit[i-1]*2;       
        printf("%d is %8d/n" , i, bit[i]);   
   
    }

    int maxNum = bit[nSize*nSize-1]*2;

    int count = 0;
   
    for(int i = 0; i < maxNum; i++)
    {
        if(checkTransitive(i, bit, nSize))   
        {
            count++;
        }
    }

    printf("count is %4d/n" , count);   
   
    return 0;
}