📄 1260.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1260 on 2006-05-17 at 20:04:56 */
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int EN = 32;
int eo[EN], n, ek = 3;
char ele[EN], table[EN][EN], x, y, z;
void checkGroup();
int main()
{
int i, t;
for(t = 0; scanf("%d\n", &n) != EOF && n != 0; t++) {
memset(eo, -1, sizeof(eo));
n = strlen(gets(ele));
for(i = 0; i < n; i++) eo[ele[i]-'a'] = i;
for(i = 0; i < n; i++) gets(table[i]);
checkGroup();
printf("S = {");
for(i = 0; i < n; i++) printf("%c%c", ele[i], i == n-1 ? '}' : ',');
printf("\n #|%s\n", ele); printf(" -+");
for(i = 0; i < n; i++) putchar('-'); putchar('\n');
for(i = 0; i < n; i++) printf(" %c|%s\n", ele[i], table[i]); putchar('\n');
switch(ek) {
case 0: printf("NOT A SEMIGROUP: %c#%c = %c WHICH IS NOT AN ELEMENT OF THE SET\n", x, y, z); break;
case 1: printf("NOT A SEMIGROUP: (%c#%c)#%c IS NOT EQUAL TO %c#(%c#%c)\n", x, y, z, x, y, z); break;
case 2: printf("SEMIGROUP BUT NOT COMMUTATIVE (%c#%c IS NOT EQUAL TO %c#%c)\n", x, y, y, x); break;
default: printf("COMMUTATIVE SEMIGROUP\n");
}
printf("------------------------------\n\n");
}
return 0;
}
void checkGroup()
{
int i, j, k; ek = 3;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
if(eo[table[i][j]-'a'] == -1) { ek = 0; x = ele[i]; y = ele[j]; z = table[i][j]; return; }
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
for(k = 0; k < n; k++)
if(table[eo[table[i][j]-'a']][k] != table[i][eo[table[j][k]-'a']])
{ ek = 1; x = ele[i]; y = ele[j]; z = ele[k]; return; }
for(i = 0; i < n; i++)
for(j = i; j < n; j++)
if(table[i][j] != table[j][i]) { ek = 2; x = ele[i]; y = ele[j]; return; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -