一个计算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;
}