4结点图的同构判定方法
2013-12-12 13:11
190 查看
#include<iostream>
using std::cout;
using std::cin;
void juzhenshuru(booljuzhen[4][4])
{
cout<<"请输入标准的矩阵";
for(intm=0;m<4;m++)
{
for(intn=0;n<4;n++)
{
cin>>juzhen[m]
;
}
}
}
int panding(inta,intb,intc,intd,booljuzhencanshu1[4][4],booljuzhencanshu2[4][4])
{
if(juzhencanshu1[0][0]!=juzhencanshu2[a][a])return0;
if(juzhencanshu1[0][1]!=juzhencanshu2[a][b])return0;
if(juzhencanshu1[0][2]!=juzhencanshu2[a][c])return0;
if(juzhencanshu1[0][3]!=juzhencanshu2[a][d])return0;
if(juzhencanshu1[1][0]!=juzhencanshu2[b][a])return0;
if(juzhencanshu1[1][1]!=juzhencanshu2[b][b])return0;
if(juzhencanshu1[1][2]!=juzhencanshu2[b][c])return0;
if(juzhencanshu1[1][3]!=juzhencanshu2[b][d])return0;
if(juzhencanshu1[2][0]!=juzhencanshu2[c][a])return0;
if(juzhencanshu1[2][1]!=juzhencanshu2[c][b])return0;
if(juzhencanshu1[2][2]!=juzhencanshu2[c][c])return0;
if(juzhencanshu1[2][3]!=juzhencanshu2[c][d])return0;
if(juzhencanshu1[3][0]!=juzhencanshu2[d][a])return0;
if(juzhencanshu1[3][1]!=juzhencanshu2[d][b])return0;
if(juzhencanshu1[3][2]!=juzhencanshu2[d][c])return0;
if(juzhencanshu1[3][3]!=juzhencanshu2[d][d])return0;
elsereturn1;
}
int main()
{
boola[4][4],b[4][4];
juzhenshuru(a);juzhenshuru(b);
if(panding(0,1,2,3,a,b))cout<<"同构";return
0;
if(panding(0,1,3,2,a,b))cout<<"同构";return
0;
if(panding(0,2,1,3,a,b))cout<<"同构";return
0;
if(panding(0,2,3,1,a,b))cout<<"同构";return
0;
if(panding(0,3,2,1,a,b))cout<<"同构";return
0;
if(panding(0,3,1,2,a,b))cout<<"同构";return
0;
if(panding(1,0,2,3,a,b))cout<<"同构";return
0;
if(panding(1,0,3,2,a,b))cout<<"同构";return
0;
if(panding(1,2,0,3,a,b))cout<<"同构";return
0;
if(panding(1,2,3,0,a,b))cout<<"同构";return
0;
if(panding(1,3,2,0,a,b))cout<<"同构";return
0;
if(panding(1,3,0,2,a,b))cout<<"同构";return
0;
if(panding(2,1,0,3,a,b))cout<<"同构";return
0;
if(panding(2,1,3,0,a,b))cout<<"同构";return
0;
if(panding(2,0,3,1,a,b))cout<<"同构";return
0;
if(panding(2,0,1,3,a,b))cout<<"同构";return
0;
if(panding(2,3,0,1,a,b))cout<<"同构";return
0;
if(panding(2,3,1,0,a,b))cout<<"同构";return
0;
if(panding(3,1,2,0,a,b))cout<<"同构";return
0;
if(panding(3,1,0,2,a,b))cout<<"同构";return
0;
if(panding(3,2,1,0,a,b))cout<<"同构";return
0;
if(panding(3,2,0,1,a,b))cout<<"同构";return
0;
if(panding(3,0,2,1,a,b))cout<<"同构";return
0;
if(panding(3,0,1,2,a,b))cout<<"同构";return
0;
cout<<"不是同构";
return0;
}
using std::cout;
using std::cin;
void juzhenshuru(booljuzhen[4][4])
{
cout<<"请输入标准的矩阵";
for(intm=0;m<4;m++)
{
for(intn=0;n<4;n++)
{
cin>>juzhen[m]
;
}
}
}
int panding(inta,intb,intc,intd,booljuzhencanshu1[4][4],booljuzhencanshu2[4][4])
{
if(juzhencanshu1[0][0]!=juzhencanshu2[a][a])return0;
if(juzhencanshu1[0][1]!=juzhencanshu2[a][b])return0;
if(juzhencanshu1[0][2]!=juzhencanshu2[a][c])return0;
if(juzhencanshu1[0][3]!=juzhencanshu2[a][d])return0;
if(juzhencanshu1[1][0]!=juzhencanshu2[b][a])return0;
if(juzhencanshu1[1][1]!=juzhencanshu2[b][b])return0;
if(juzhencanshu1[1][2]!=juzhencanshu2[b][c])return0;
if(juzhencanshu1[1][3]!=juzhencanshu2[b][d])return0;
if(juzhencanshu1[2][0]!=juzhencanshu2[c][a])return0;
if(juzhencanshu1[2][1]!=juzhencanshu2[c][b])return0;
if(juzhencanshu1[2][2]!=juzhencanshu2[c][c])return0;
if(juzhencanshu1[2][3]!=juzhencanshu2[c][d])return0;
if(juzhencanshu1[3][0]!=juzhencanshu2[d][a])return0;
if(juzhencanshu1[3][1]!=juzhencanshu2[d][b])return0;
if(juzhencanshu1[3][2]!=juzhencanshu2[d][c])return0;
if(juzhencanshu1[3][3]!=juzhencanshu2[d][d])return0;
elsereturn1;
}
int main()
{
boola[4][4],b[4][4];
juzhenshuru(a);juzhenshuru(b);
if(panding(0,1,2,3,a,b))cout<<"同构";return
0;
if(panding(0,1,3,2,a,b))cout<<"同构";return
0;
if(panding(0,2,1,3,a,b))cout<<"同构";return
0;
if(panding(0,2,3,1,a,b))cout<<"同构";return
0;
if(panding(0,3,2,1,a,b))cout<<"同构";return
0;
if(panding(0,3,1,2,a,b))cout<<"同构";return
0;
if(panding(1,0,2,3,a,b))cout<<"同构";return
0;
if(panding(1,0,3,2,a,b))cout<<"同构";return
0;
if(panding(1,2,0,3,a,b))cout<<"同构";return
0;
if(panding(1,2,3,0,a,b))cout<<"同构";return
0;
if(panding(1,3,2,0,a,b))cout<<"同构";return
0;
if(panding(1,3,0,2,a,b))cout<<"同构";return
0;
if(panding(2,1,0,3,a,b))cout<<"同构";return
0;
if(panding(2,1,3,0,a,b))cout<<"同构";return
0;
if(panding(2,0,3,1,a,b))cout<<"同构";return
0;
if(panding(2,0,1,3,a,b))cout<<"同构";return
0;
if(panding(2,3,0,1,a,b))cout<<"同构";return
0;
if(panding(2,3,1,0,a,b))cout<<"同构";return
0;
if(panding(3,1,2,0,a,b))cout<<"同构";return
0;
if(panding(3,1,0,2,a,b))cout<<"同构";return
0;
if(panding(3,2,1,0,a,b))cout<<"同构";return
0;
if(panding(3,2,0,1,a,b))cout<<"同构";return
0;
if(panding(3,0,2,1,a,b))cout<<"同构";return
0;
if(panding(3,0,1,2,a,b))cout<<"同构";return
0;
cout<<"不是同构";
return0;
}
相关文章推荐
- 数据结构——线性表——散列存储结构——哈希表知识点总结 原创 2017年05月14日 10:08:40 散列(hashing)是一种重要的存储方法,也是一种常见的查找方法。 基本思想:以结点的
- 初始化链表的四种方法(有无头结点以及表头(尾)插入法)
- isArray()方法 判定此Class对象是否表示一个数组类
- 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换(容易)
- Codeforces 383C. Propagating tree(树上hash映射+线段树懒操作)->(一种将树结点规律化的方法)
- CocosCreator常用API函数库(二)_多边形包含判定的函数API使用方法实例
- 负反馈的类型及判定判别方法 及其优点
- Java中各种“空”的判定方法
- 查找页面中所有类为test的结点的方法
- ABAP判定生产订单的两种方法
- 时间复杂度为O(1)的删除链表结点方法
- 弦图ZOJ 1015 Fishing Net 判定方法
- java内存泄漏原因、判定及解决方法
- 拼接菱形的冲突判定方法(二)
- 自己写的一个根据结点名称查找CTreeCtrl树中对应结点的方法(用的是递归思想)
- 使用React的static方法实现同构以及同构的常见问题
- python 字典元素判定方法
- 设计鲁棒性的方法:输入一个链表的头结点,逆序遍历打印该链表出来
- PTA 7-1 树的同构(25 分)25分代码 结构体保存结点