c++ 离散数学 群的相关判断及求解
采用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++ 离散数学 群的相关判断及求解的更多相关文章
- 深入浅出—Redis集群的相关详解
前言: 这篇文章主要介绍了Redis集群的相关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 注意!要求使用的都是redis3.0以上的版本,因为3.0以上增加了red ...
- PostgreSQL集群方案相关索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的集群方案相关文摘和文章的链接: pgpool-II: 1 pgpool-I ...
- nbu集群Alwayson相关问题
Alwayson 1. Alwayson 是否依赖于域环境? 答: 是, alwayson依赖于故障转移群集(只有在故障转移群集中的SQL Server 才能启动高可行性组功能),而故障转移群集愈依赖 ...
- redis集群及相关的使用
从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接. 1.所有的redis节点彼此互 ...
- js相关判断
//正则表达式判断是否为空 /^\s*?$/.test(obj) //批量转换方法 function sort(s){return s.match(/\d/g).sort()+'' } //判断是否相 ...
- oracle集群部署相关文章
1. Oracle数据库HA架构方案介绍:http://blog.sina.com.cn/s/blog_7273b6cc0100p0sr.html 2.Oracle 集群概念和原理
- Centos7安装Nacos单机模式以及集群模式(包含nignx安装以及实现集群)的相关配置
Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. Nacos支持三种部署模式 单机模式 - 用于测试 ...
- 基于粒子群算法求解求解TSP问题(JAVA)
一.TSP问题 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选 ...
- 数值计算:粒子群优化算法(PSO)
PSO 最近需要用上一点最优化相关的理论,特地去查了些PSO算法相关资料,在此记录下学习笔记,附上程序代码.基础知识参考知乎大佬文章,写得很棒! 传送门 背景 起源:1995年,受到鸟群觅食行为的规律 ...
随机推荐
- FMDB线程安全
//打开数据库 如果没有就创建 NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUse ...
- codevs1183 泥泞的道路
题目描述 Description CS有n个小区,并且任意小区之间都有两条单向道路(a到b,b到a)相连.因为最近下了很多暴雨,很多道路都被淹了,不同的道路泥泞程度不同.小A经过对近期天气和地形的科学 ...
- mysql登录报错“Access denied for user 'root'@'localhost' (using password: YES”的处理方法
使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码: 文件内容: [client]host = localhostuser = debian-sys-maint ...
- ReactiveCocoa源码拆分解析(七)
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 在这篇博客中,我将把ReactiveCocoa中的擦 ...
- C和指针 第五章 位数组
5.4的习题:编写一组函数,实现维数组,函数原型如下: //指定位设置为1void set_bit(char bit_array[], unsigned bit_number); //指定位清零 vo ...
- mount img
直接挂载img文件有时会有 mount:您必须指定文件系统类型 的错误,但加 -t ext2 等类型还是没用. 这是因为img文件包含了mbr引导导致的问题.解决方法如下: $sudo fdis ...
- Python日志logging
logging 用于便捷记录日志且线程安全的模块 1.单文件日志 import logging logging.basicConfig(filename='log.log', format='%(as ...
- mac brew install redis 报错
mac brew install redis 报错 /usr/local/opt/php55/bin/phpize /usr/local/opt/php55/bin/phpize: line 61: ...
- 解决ThinkPHP Call to a member function assign() on a non-object
<ignore_js_op> assign是tp模板输出变量的一个方法.没有object只能说没实例化...<ignore_js_op> 经过几番思索,终于发现了.原来是Act ...
- iOS 4种开发者身份的官方说明
https://developer.apple.com/support/compare-memberships/cn/ 为了防止链接失效,截图如下: