标签:main char 输出 alt printf 输入 matrix pat 字母
给定一个运算表,判断它是否构成群
群定义:群表示一个拥有满足封闭性、满足结合律、有单位元、有逆元的二元运算的代数结构
abc
bca
cab
表示运算表:
对于每个运算表,按照以下格式打印输出该运算表以及是否构成群:
a b c
b c a
c a b
Group:Yes/No
注意,
Group:Yes
否则打印
Group:No
2
3
abc
bca
cab
3
abc
acb
bca
a b c
b c a
c a b
Group:Yes
a b c
a c b
b c a
Group:No
#include <stdio.h>
int main(){
int matrixnum = 0;
scanf("%d",&matrixnum);
for(int i = 0; i < matrixnum; i++){
int size;//矩阵大小
int flag = 1;
scanf("%d",&size);
char matrix[10][10];
for(int j = 0; j < size; j++){
scanf("%s",matrix[j]);
}
for(int j = 0; j < size; j++){
for(int k = 0; k < size; k ++){
printf("%c ",matrix[j][k]);
//判断封闭性
if(matrix[j][k]>‘a‘+size-1)flag = 0;
}
putchar(‘\n‘);
}
//判断结合律
for(int j = 0; j < size; j++){
for(int k = 0; k < size; k ++){
for(int i = 0; i < size; i++){
if(matrix[matrix[j][k]-‘a‘][i]!=matrix[j][matrix[k][i]-‘a‘])flag = 0;
}
}
}
//判断单位元
int hasidentity = 0;
int identity =0;
for(int j = 0; j < size; j++){
int cnt = 0;
for(int k = 0; k < size; k ++){
if(matrix[j][k] == k+‘a‘ && matrix[k][j] == k+‘a‘)cnt++;
}
if(cnt == size){
hasidentity = 1;
identity = j;
}
}
if(hasidentity == 0)flag = 0;
//判断逆元
int arr[size] = {0};
for(int j = 0; j < size; j ++){
for(int k = 0; k < size; k++){
if(matrix[j][k] == j+‘a‘ )arr[j]=1;
}
}
for(int j = 0; j < size; j++){
if(arr[j]==0)flag = 0;
}
if(flag == 1)printf("Group:Yes\n");
else printf("Group:No\n");
}
}
标签:main char 输出 alt printf 输入 matrix pat 字母
原文地址:https://www.cnblogs.com/miaomiaolan/p/13060279.html