#include <stdio.h>
#define N 20
int isalge(int s[][N],int n)
{
int i,j;
int flag=1;
for(i=0;i<=n&&flag;i++)
{
for(j=0;j<=n&&flag;j++)
{
if(s[i][j]<0||s[i][j]>n)
flag=0;
}
}
return flag;
}
int swap(int s[][N],int n)
{
int i,j;
int flag=1;
for(i=1;i<=n&&flag;i++)
{
for(j=0;j<i&&flag;j++)
{
if(s[i][j]!=s[j][i])
flag=0;
}
}
return flag;
}
int combine(int s[][N],int n)
{
int i,j,k;
int flag=1;
for(i=0;i<=n&&flag;i++)
{
for(j=0;j<=n&&flag;j++)
{
for(k=0;k<=n&&flag;k++)
{
if(s[s[i][j]][k]!=s[i][s[j][k]])
flag=0;
}
}
}
return flag;
}
int main()
{
int n;
int s[N][N];
int i,j;
printf("输入n:");
scanf("%d",&n);
printf("输入运算表:\n");
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
scanf("%d",&s[i][j]);
if(isalge(s,n))
{
printf("<s,*>是代数系统。\n");
if(swap(s,n))
printf("*满足交换律。\n");
else
printf("*不满足交换律。\n");
if(combine(s,n))
printf("*满足结合律。\n");
else
printf("*不满足结合律。\n");
}
else
printf("<s,*>不是代数系统。\n");
return 0;
}