采用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. java基础知识(一)数据类型(上)

    java的数据类型 由上图,java的数据类型分为基本数据类型.引用数据类型两大类. 1.基本数据类型 与c不同,java的各种数据类型占有固定长度的内存,与具体的软硬件平台无关:另外,每种数据类型都 ...

  2. no screens found! ubuntu进不了图形界面了

    no screens found! ubuntu进不了图形界面了 结果是没装显卡 startx error. reinstall xorg, x server doesn't work. driver ...

  3. liunx中计算机壳层

    什么是shell?shell是用C语言编写的程序.既是一种命令语言,又是一种程序设计语言.shell是一种应用程序,这个应用程序提供一个界面,用户通过这个界面访问系统内核的服务.在计算机科学中,She ...

  4. nginx + tomcat配置负载均衡

    目标:Nginx做为HttpServer,连接多个tomcat应用实例,进行负载均衡. 注:本例程以一台机器为例子,即同一台机器上装一个nginx和2个Tomcat且安装了JDK1.7. 1.安装Ng ...

  5. angularjs里对JS的lowercase和uppercase的完善

    读angularjs的源码开头. var lowercase = function (string) { return isString(string) ? string.toLowerCase() ...

  6. python tornado 入门

    #!/usr/bin/env python # coding:utf-8 import textwrap import tornado.httpserver import tornado.ioloop ...

  7. 开发基于Edge渲染内核的浏览器应用

    在使用Edge之前,我们先来看看UWP(Universal Windows Platform)平台.微软研发了多种设备平板.手机.Xbox.个人电脑等,在此之前,如果需要给每台设备开发程序,都需要对应 ...

  8. PHP面向对象讲解

    面向对象   类<------>对象 面向对象例题 理解:  减少 变量的重新定义    比如  变量前的  var   $    思路更加明确 class Yuan ----后面不加() ...

  9. css中一些常用技巧

    // css中引入字体文件 @font-face { font-family: msyh; /*这里是说明调用来的字体名字*/ src: url('../font/wryh.ttf'); /*这里是字 ...

  10. Indy FTP 警告:Only one TIdAntiFreeze can be active in an application

    > Should I use a AntiFreeze component on every form I have a TIdTCPClient > component?  Or is ...