采用C/C++/其它语言编程,构造一个n阶群<G={a,b,c,…},*>,G的阶|G|满足:3<=|G|<=6

1、判断该群是否是循环群,若是,输出该群的某个生成元。

2、给出每一个元素的阶和逆元

 #include<iostream>

 using namespace std;
//返回元素下标
//n为集合元素个数,set[]为存放元素集合,s为要求下标的元素
int sub(int n, char set[], char s)
{
for (int i = ; i < n; i++)
{
if (set[i] == s)
return i;
}
} //判断群是不是循环群
//n为群的阶数,,set[]为存放集合元素的数组,ele[6][6]为存放群运算表的二维数组
int Iscyc(int n, char set[], char ele[][])
{
int x, count;
int cnt;
for (int i = ; i < n; i++)
{
count = ;//计量---集合中的元素是否由set[i]的幂组成 for (int j = ; j < n; j++)
{
x = i;
cnt = ;//防止死循环
if (set[j] == set[i])
count++;
if (set[j] == ele[x][i])
count++; while (set[j] != ele[x][i] && cnt < n)
{
x = sub(n, set, ele[x][i]);
cnt++;
if (set[j] == ele[x][i])
count++;
} }
if (count == n)
return ;
}
return ; } //输出循环群的生成元
//n为群的阶数,,set[]为存放集合元素的数组,ele[6][6]为存放群运算表的二维数组
void gen(int n, char set[], char ele[][])
{
int x, count;
int cnt;
for (int i = ; i < n; i++)
{
count = ;
for (int j = ; j < n; j++)
{
x = i;
cnt = ;
if (set[j] == set[i])
count++;
if (set[j] == ele[x][i])
count++;
while (set[j] != ele[x][i] && cnt < n)
{
x = sub(n, set, ele[x][i]);
cnt++;
if (set[j] == ele[x][i])
count++;
}
}
if (count == n)
cout << "循环群的生成元是:" << set[i] << endl;
}
} //给出群中每个元素的阶
//n为群的阶数,,set[]为存放集合元素的数组,ele[6][6]为存放群运算表的二维数组,ie为幺元
void order(int n, char set[], char ele[][], char ie)
{
int x, cnt;
for (int i = ; i < n; i++)
{
if (set[i] != ie)
{
x = i;
cnt = ;
if (ele[x][i] == ie)
cout << set[i] << "的阶是" << cnt << endl;
while (ele[x][i] != ie)
{
x = sub(n, set, ele[x][i]);
cnt++;
if (ele[x][i] == ie)
{
cout << set[i] << "的阶是" << cnt << endl;
break;
}
}
}
else
cout << set[i] << "的阶是1" << endl;
} } //输出群中每个元素的逆元
//n为群的阶数,,set[]为存放集合元素的数组,ele[6][6]为存放群运算表的二维数组
//ie为幺元
void inver(int n, char set[], char ele[][], char ie)
{ for (int i = ; i < n; i++)
for (int j = ; j < n; j++)
{
if (ele[i][j] == ie)
{
cout << set[i] << "的逆元是" << set[j] << endl;
break;
}
} } int main()
{
cout << "请输入元素的个数(要求3到6之间)" << endl;
int inputnum;
cin >> inputnum;
cout << "请输入元素" << endl;
char Y[];
for (int i = ; i < inputnum; i++)
{
cin >> Y[i];
}
cout << "请输入群的幺元" << endl;
char e;
cin >> e;
char outputform[][];
char out1[][];
outputform[][] = '*';
for (int i = ; i <= inputnum; i++)
{
outputform[][i] = Y[i - ];
outputform[i][] = Y[i - ];
}
int m;
for (int i = ; i < inputnum; i++)
{
if (Y[i] == e)
{
m = i;
break;
}
}
int n = m;
int r = m;
for (int i = ; i < inputnum; i++)
{
out1[n%inputnum][m] = Y[n%inputnum];
n = n + ;
}
int q;
for (int i = ; i < inputnum; i++)
{
q = ;
for (int y = ; y < inputnum; y++)
{
if (out1[i][m] == Y[y])
{
q = y;
break;
}
}
for (int j = m; j < inputnum + m; j++)
{
out1[i][j%inputnum] = Y[q%inputnum];
q++;
}
}
for (int i = ; i <= inputnum; i++)
{
for (int j = ; j <= inputnum; j++)
{
outputform[i][j] = out1[i - ][j - ];
}
}
for (int i = ; i <= inputnum; i++)
{
for (int j = ; j <= inputnum; j++)
{
cout << outputform[i][j] << ' ';
}
cout << endl;
} cout << "---------------------------" << endl;
if (Iscyc(inputnum, Y, out1))
{
cout << "<G,*>是循环群" << endl;
gen(inputnum, Y, out1);
}
else
cout << "<G,*>不是循环群" << endl;
cout << "---------------------------" << endl;
order(inputnum, Y, out1, e);
cout << "---------------------------" << endl;
inver(inputnum, Y, out1, e); return ;
}

c++ 离散数学 群的相关判断及求解的更多相关文章

  1. 深入浅出—Redis集群的相关详解

    前言: 这篇文章主要介绍了Redis集群的相关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 注意!要求使用的都是redis3.0以上的版本,因为3.0以上增加了red ...

  2. PostgreSQL集群方案相关索引页

    磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的集群方案相关文摘和文章的链接: pgpool-II: 1 pgpool-I ...

  3. nbu集群Alwayson相关问题

    Alwayson 1. Alwayson 是否依赖于域环境? 答: 是, alwayson依赖于故障转移群集(只有在故障转移群集中的SQL Server 才能启动高可行性组功能),而故障转移群集愈依赖 ...

  4. redis集群及相关的使用

    从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接. 1.所有的redis节点彼此互 ...

  5. js相关判断

    //正则表达式判断是否为空 /^\s*?$/.test(obj) //批量转换方法 function sort(s){return s.match(/\d/g).sort()+'' } //判断是否相 ...

  6. oracle集群部署相关文章

    1. Oracle数据库HA架构方案介绍:http://blog.sina.com.cn/s/blog_7273b6cc0100p0sr.html 2.Oracle 集群概念和原理

  7. Centos7安装Nacos单机模式以及集群模式(包含nignx安装以及实现集群)的相关配置

    Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos支持三种部署模式 单机模式 - 用于测试 ...

  8. 基于粒子群算法求解求解TSP问题(JAVA)

    一.TSP问题 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选 ...

  9. 数值计算:粒子群优化算法(PSO)

    PSO 最近需要用上一点最优化相关的理论,特地去查了些PSO算法相关资料,在此记录下学习笔记,附上程序代码.基础知识参考知乎大佬文章,写得很棒! 传送门 背景 起源:1995年,受到鸟群觅食行为的规律 ...

随机推荐

  1. Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?

    打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5 ...

  2. LCTT 三岁啦

    导读 不知不觉,LCTT 已经成立三年了,对于我这样已经迈过四张的人来说,愈发的感觉时间过得真快.这三年来,我们 LCTT 经历了很多事情,有些事情想起来仍恍如昨日. 三年前的这一天,我的一个偶发的想 ...

  3. CSS代码片段【图文】

    1.垂直对齐 .verticalcenter{ position: relative; top: 50%; -webkit-transform: translateY(-50%); -o-transf ...

  4. DES & 3DES 加密算法

    JAVA坑 跟其他公司java的对接口,一个细节对到吐血,具体: DesUtil.java(别人的反例) //package base_class; import java.io.IOExceptio ...

  5. Java的native方法

    一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非j ...

  6. Excel 相对引用与绝对引用

      相对引用与绝对引用 相对引用与绝对引用的区别在于,当将公式复制到其它单元格时,公式中单元格或单元格区域的地址是否有变化. 相对引用在复制公式时地址跟着发生变化,而绝对引用不会发生变化!绝对引用的方 ...

  7. python第14天

    Python之前端web: HTML CSS 一. 什么是HTML: html为超文本语言,使用标签来描述网页. html标签格式: HTML 标签是由尖括号包围的关键词,比如 <html> ...

  8. eclipse配置jdk的src.zip源代码步骤

    MyEclipse配置JDK的源代码的src.zip包很简单.只需要简单的几个步骤. 1.点 “window”-> “Preferences” -> “Java” -> “Insta ...

  9. QQ付费群规则重大变更!特别是这类群!

    很多人都是知道现在QQ有个付费群功能.以往加群需要你填写一些验证信息给管理员,管理员看你顺眼就放你进去,不顺眼你就进不去了.另外还有一些打广告的人难免会被管理员误判给放进去,令管理员苦恼不已,总有审核 ...

  10. [mysql]知识补充

    知识概况 视图 函数 存储过程 事务 索引 触发器 [视图] 视图是一个虚拟表,可以实现查询功能,不能进行增删改 本质:根据sql语句获取动态的数据集,并为其命名 1.创建视图 --create vi ...