帮我改个程序50分,有关迷宫的程序

kaphoon 2004-02-27 05:02:12
//main.cpp
#include<iostream>
#include<cstdlib>
#include<stack>
#include"elemType.h"
using namespace std;

bool mazeFun()
{
SElemType curElem = Maze::start;
static stack<SElemType> ss;
do{

curElem.setSelected();//±êÖ¾£¬ÒѾ­±»Ñ¡ÖÐ

if(curElem.isOK())//µ±Ç°µã¿ÉͨÇҴ˵ã´æÔÚ
{
ss.push(curElem);
if(curElem == Maze::end) return true;
else
curElem = curElem.next();//¶«ÁÚµã
}
else
{
if(!ss.empty()&&ss.top().isOK())
curElem = ss.top().next();
else
if(!ss.empty()&&!ss.top().isOK())
{
ss.pop();
if(!ss.empty())
curElem = ss.top();
}
}
}while(!ss.empty());

return false;
}

int main()
{
cout<<"ÕâÊÇÒ»¸öÑ°ÇóÃÔ¹¬³ö·µÄ³ÌÐò"<<endl;
cout<<"ÇëÊäÈëÄãµÄÃÔ¹¬´óС"<<endl;
int nn;
cin>>nn;
Maze::setMaze(nn);
if(mazeFun())
{
while(!ss.empty())
{
cout<<"("<<ss.top().seat.x<<","<<ss.top().seat.y<<")"<<endl;
ss.pop();
}
}

system("pause");
return 0;
}




///////////////////////////////////////////////////////////
//elemType.h
typedef int hor;
typedef int ver;

typedef struct _PosType{
hor x;
ver y;
}PosType;


class SElemType{

bool isSelected;//ÊÇ·ñ±»Ñ¡¹ý
public:
SElemType(int xx, int yy);
bool isOK();
void setSelected(){isSelected = true;}
bool operator==(SElemType ss);
SElemType operator= (SElemType ss);
SElemType next();
PosType seat;//×ø±êλÖÃ
};

class Maze{
public:
static SElemType start;
static SElemType end;
void static setMaze(int mm)
{
SElemType start(0,0);
SElemType end(mm,mm);



}
};

//////////////////////////////////////////////
//elemType.cpp
#include"elemType.h"

SElemType::SElemType(int xx, int yy)
{
seat.x = xx;
seat.y = yy;
isSelected = false;
}
bool SElemType::operator==(SElemType ss)
{
if(ss.seat.x==seat.x&&ss.seat.y==seat.y)
return true;
else return false;
}
SElemType SElemType::operator= (SElemType ss)
{
//ÂÔÈ¥¼ì²â×ÔÎÒ¸´ÖÆ
seat.x = ss.seat.x;
seat.y = ss.seat.y;
isSelected = ss.isSelected;
return *this;
}

SElemType SElemType::next()
{
SElemType temp(seat.x+1,seat.y);

if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x,seat.y+1);
if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x-1,seat.y);
if(!temp.isSelected) return temp;
else
{
SElemType temp(seat.x,seat.y-1);
return temp;

}
}
}
}

bool SElemType::isOK()
{
int a = seat.x;
if(((seat.x)>(Maze::end.seat.x))||seat.y>Maze::end.seat.y)
return false;
else
return next().isOK();
}


这是个有关迷宫的程序,我把一个迷宫图定义为一个类,有起始位置,结束位置,
而每个位置也定义为一个类,所在的坐标位置和是否被选过。
第一:程序能编译,但是不能连接,这为什么?
第二:这个程序在设计类上,或者选用数据结构上有什么漏洞吗?

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

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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