帮忙编译下,有几个错误,想不明白,求指教!

yanghan111 2012-12-16 09:07:27
//................................................
//.......IQGrame.cpp
//................................................
#include<iostream>
using namespace std;
#define VertexNum 256;//最大顶点数。因为有八个人,每个人过不过岸有两种情况,总共是2的八子方。
//.................................................
typedef struct{ //顶点(包含每个人的状态)

int dad; //爸爸
int mom; //妈妈
int son1; //儿子1
int son2; //儿子2
int daughter1; //女儿1
int daughter2; //女儿2
int poilce; //警察
int criminal; //罪犯
}Vertex;//..........................................

typedef struct{ //定义图的邻接矩阵存储结构

int vertexNum; //图的当前顶点数
Vertex vertex [VertexNum]; //顶点向量(代表顶点)
bool Edge[VertexNum][VertexNum]; //邻接矩阵,用于存储图中的边,其矩阵元素个数取决于顶点个数,与边数无关

}AdjGraph;//.........................................

bool visited[VertexNum] = {false}; //对已经访问的顶点进行标记
int retpath[VertexNum] = {-1}; //保存搜索路径

//返回vertex[VertexNum]对应的下标
int locate(AdjGraph* graph,int dad,int mom,int son1,int son2,int daughter1,int daughter2,int poilce,int criminal){

for(int i=0;i<=graph->vertexNum;i++){

if((graph->vertex[i].dad==dad)&&(graph->vertex[i].mom==mom)&&(graph->vertex[i].son1==son1)&&
(graph->vertex[i].son2==son2)&&(graph->vertex[i].daughter1==daughter1)&&
(graph->vertex[i].daughter2==daughter2)&&(graph->vertex[i].poilce==poilce)&&
(graph->vertex[i].criminal==criminal)){

return i;
}
}
return -1;
}

//深度优先搜素从u到v的简单路径 //DFS--Depth First Search
void dfsPath(AdjGraph* graph,int start,int end){

int i=0;
visited[start]=true; //标记已访问过的顶点

if(start==end){

return;
}
for(i=0;i<graph->vertexNum;i++){

if(graph->Edge[start][i] && !visited[i]){

retpath[start]=i;
dfsPath(graph,i,end);
}

}
}

//判断这个顶点组合是否安全
bool isSafe(int dad,int mom,int son1,int son2,int daughter1,int daughter2,int poilce,int criminal){

if((poilce!=criminal) && ((dad!=mom)&&((dad==daughter1)||(dad==daughter2)))&&
((dad!=mom)&&((mom==son1)||(dad==son2)))){

return false;
}else{

return true;
}


}

//判断状态i与状态j之间是否可转换
bool isConnect(AdjGraph* graph,int i,int j){

int k=0,
int m=0;
if(graph->vertex[i].dad != graph->vertex[j].dad){

k++;
}
if(graph->vertex[i].mom!= graph->vertex[j].mom){

k++;
}
if(graph->vertex[i].son1!= graph->vertex[j].son1){

k++;
}
if(graph->vertex[i].son2 != graph->vertex[j].son2){

k++;
}
if(graph->vertex[i].daughter1 != graph->vertex[j].daughter1){

k++;
}
if(graph->vertex[i].daughter2 != graph->vertex[j].daughter2){

k++;
}
if(graph->vertex[i].poilce != graph->vertex[j].poilce){

k++;
}
if(graph->vertex[i].criminal != graph->vertex[j].criminal){

k++;
}

if((graph->vertex[i].dad != graph->vertex[j].dad) || (graph->vertex[i].mom!= graph->vertex[j].mom)||
(graph->vertex[i].poilce != graph->vertex[j].poilce)){

m++;
}

if(k<=2&&m){

return true;
}else{

return false;
}



}

//创建连接图
void CreateG(AdjGraph* graph){

int i=0;
int j=0;
//生产所有安全的顶点
for(int dad=0;dad<=1;dad++){
for(int mom=0;mom<=1;mom++){
for(int son1=0;son1<=1;son1++){
for(int son2=0;son2<=1;son2++){
for(int daughter1=0;daughter1<=1;daughter1++){
for(int daughter2=0;daughter2<=1;daughter2++){
for(int poilce=0;poilce<=1;poilce++){
for(int criminal=0;criminal<=1;criminal++){

if(isSafe(dad,mom,son1,son2,daughter1,daughter2,poilce,criminal)){

graph->vertex[i].dad=dad;
graph->vertex[i].mom=mom;
graph->vertex[i].son1=son1;
graph->vertex[i].son2=son2;
graph->vertex[i].daughter1=daughter1;
graph->vertex[i].daughter2=daughter2;
graph->vertex[i].poilce=poilce;
graph->vertex[i].criminal=criminal;
i++;

}

}
}
}
}
}
}
}
}

//邻接矩阵初始化,即建立邻接矩阵
graph->vertexNum=i;

for(i=0;i<graph->vertexNum;i++){
for(j=0;j<graph->vertexNum;j++){

//状态i与状态j 之间转化,初始化为true,否则为false
if(isConnect(graph,i,j)){

graph->Edge[i][j]=true;
}else{

graph->Edge[i][j]=false;
}

}
}

return ;
}

int main(){

AdjGraph graph;
CreateG(&graph);
int start = locate(&graph,0,0,0,0,0,0,0,0);
int end = locate(&graph,1,1,1,1,1,1,1,1);
dfsPath(&graph,start,end);
if(visited[end]){
cout<<"ok";

}
return -1;


}





...全文
77 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧