您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2015-06-27 19:42 295 查看
今天在利用BFS来遍历无向图的时候发现了一个问题 ,怎样标记标记无向图的状态以前是否被访问过来避免重复的访问产生的大量的空间和时间的浪费,最简单的方法就是将无向图的每种状态转化成一个数字,然后再设置一个数组来标记是否被访问过。问题的关键在于怎样将无向图的状态转化成数字。再将无向图具体一点到利用一个数组表示的无向图将设这个数组表示的是3*3的一个无向图

在这3*3的图中分别填上0~8数字,则每个里面有一个元素 ,总共有9!种状态。 那么怎么把放在一维数组变成与之相对应的数字呢?

int fact[9];//用来存放阶乘数


void computer()//计算阶乘

{

fact[0]=1;

for(int i=1;i<9;i++)

{

fact[i]=i*fact[i-1];

}

}

int code(int *a)//对包含9个元素的数组a进行编码

{

int cnt,count;

int i,j;

count=0;

for(i=0;i<9;i++)

{

cnt=0;

for(j=i+1;j<9;j++)//计算每个元素后面比他小的元素的个数

{

if(a[j]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: