采用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. jQuery入门(2)使用jQuery操作元素的属性与样式

    jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...

  2. 【Alpha版本】冲刺总结随笔

    项目预期计划 确定代码规范与编码原则. 根据原型设计,界面设计,搭建应用大致框架,完善控件,背景等的界面设计. 根据体系结构设计,完善界面跳转逻辑,确定功能模块,实现1.0版本功能. 重点完善需求说明 ...

  3. UVA2322

    题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  4. 开大你的音响,感受HTML5 Audio API带来的视听盛宴

    话说HTML5的炫酷真的是让我爱不释手,即使在这个提到IE就伤心不完的年代.但话又说回来,追求卓越Web创造更美世界这样高的追求什么时候又与IE沾过边儿呢?所以当你在看本文并且我们开始讨论HTML5等 ...

  5. SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

    参见:http://msdn.microsoft.com/zh-cn/library/ms191188(SQL.105).aspx Ole Automation Procedures 选项 [本主题为 ...

  6. No Entity Framework provider found for the ADO.NET provider with invariant

    在使用EF的时候,我把EF的EDMX放在单独的一个project中,UI中引用这个project的dll, 运行的时候就是提示No Entity Framework provider found fo ...

  7. git pull request

    如何发 PR 以下以 wiki-pages 为例 把项目 fork 到自己名下,然后 clone 到本地 git clone git@code.xiaojukeji.com:yexiliang/wik ...

  8. Unity3D 摄像机的Transform通过摇杆输出的方向

    要解决的问题是:摄像机的方向不固定,当摇杆向前(0,1)推时,主角要往摄像机的朝向(忽略Y方向)走,当摇杆往右(1,0)推的时,主角朝摄像机的右方向 /// <summary> /// 摄 ...

  9. c# 不同窗体之间传值和调用

    1.子窗体事件刷新父窗体界面值 子窗体定义委托和事件 //声明一个委托 public delegate void DisplayUpdateDelegate(string str); //声明事件 p ...

  10. Angular2 组件

    1. 组件说明 Angular2 组件是构成Angular2应用程序的核心部分,Angualr2应用程序本质上来说就是一个组件树,Angular2组件一般由模块,注解,元数据以及组件类组成,实现组件类 ...