c++迷宫问题求帮助!error C2784: 'bool __cdecl std::operator ==(const class std::istream_it

不知道为什么这么多错误,是不是stl没有运用好?我刚学的。。。#include<iostream>#include<stack>#include<malloc.h>#in... 不知道为什么这么多错误,是不是stl没有运用好?我刚学的。。。
#include<iostream>
#include<stack>
#include<malloc.h>
#include <vector>
#include <map>
#include <algorithm>
#define n 10
using namespace std;

int a[n][n]={0,0,0,0,0,0,0,0,0,0,
0,1,1,0,1,1,1,0,1,0,
0,1,1,0,1,1,1,0,1,0,
0,1,1,1,1,0,0,1,1,0,
0,1,0,0,0,1,1,1,1,0,
0,1,1,1,0,1,1,1,1,0,
0,1,0,1,1,1,0,1,1,0,
0,1,0,0,0,1,0,0,1,0,
0,0,1,1,1,1,1,1,1,0,
0,0,0,0,0,0,0,0,0,0};
int b[n][n];

typedef struct{
int x;
int y;
}coordinate;

typedef struct{
int ord;
coordinate seat;
int di;
}postype;

bool pass(coordinate epos)
{
if(b[epos.x][epos.y]==1) return true;
else return false;
}

void footprint(coordinate curpos)
{
b[curpos.x][curpos.y]=0;
}

coordinate nextpos(coordinate curpos,int t)
{
switch (t)
{
case 1:curpos.x++;
case 2:curpos.y++;
case 3:curpos.x--;
case 4:curpos.y--;
}
return curpos;
}

bool mazepath(coordinate start,coordinate end)
{
postype e;
stack<postype>pos;
coordinate curpos;
curpos=start;
int curstep=1;
do{
if(pass(curpos))
{
footprint(curpos);
e=(curstep,curpos,1);
pos.push(e);
if(curpos==end) return true;
curpos=nextpos(curpos,1);
curstep++;
}
else
{
if(!pos.empty())
{
pos.pop();
while (e.di==4&&!pos.empty())
{
footprint(e.seat);
pos.pop();
}
if(e.di<4)
{
e.di++;
pos.push(e);
curpos=nextpos(e.seat,e.di);
}
}
}
}while(!pos.empty());
return false;
}

void main()
{

coordinate start,end;
int i,j;
b[n][n]=a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
start.x=1;start.y=1;
end.x=8;end.y=8;
mazepath(start,end);
}

C:\Documents and Settings\Administrator\桌面\C++程序\MyProjects\11\1111.cpp(69) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'const int' (or there is no acceptable conversion)
C:\Documents and Settings\Administrator\桌面\C++程序\MyProjects\11\1111.cpp(71) : error C2784: 'bool __cdecl std::operator ==(const class std::multimap<_K,_Ty,_Pr,_A> &,const class std::multimap<_K,_Ty,_Pr,_A> &)' : could not deduce template argumen
t for 'const class std::multimap<_K,_Ty,_Pr,_A> &' from 'coordinate'
展开
 我来答
咬苹果qq
2010-05-05 · TA获得超过1223个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:151万
展开全部
楼主,错误如下:
1.
// e=(curstep,curpos,1); //改为下面3行的内容
e.ord=curstep; ////定义的postype e; 只是postype的对象,应该调用postype里面的成员进行赋值,上面错误的写法是函数赋值
e.seat=curpos; ////
e.di=1; ////

2.
// if(curpos==end) return true; //改为下面1行的内容
if(curpos.x==end.x && curpos.y==end.y) return true; //原因同上,应该调用coordinate里面的成员才能进行比较

还有二维数组的写法问题,具体的说在程序里,看看吧:

#include <iostream>
#include <stack>
#include <malloc.h>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

#define n 10

int a[n][n]={{0,0,0,0,0,0,0,0,0,0}, //二维数组应该这样写,小数组里也该用括号
{0,1,1,0,1,1,1,0,1,0},
{0,1,1,0,1,1,1,0,1,0},
{0,1,1,1,1,0,0,1,1,0},
{0,1,0,0,0,1,1,1,1,0},
{0,1,1,1,0,1,1,1,1,0},
{0,1,0,1,1,1,0,1,1,0},
{0,1,0,0,0,1,0,0,1,0},
{0,0,1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0}
};
int b[n][n];

typedef struct
{
int x;
int y;
}coordinate;

typedef struct
{
int ord;
coordinate seat;
int di;
}postype;

bool pass(coordinate epos)
{
if(b[epos.x][epos.y]==1) return true;
else return false;
}

void footprint(coordinate curpos)
{
b[curpos.x][curpos.y]=0;
}

coordinate nextpos(coordinate curpos,int t)
{
switch (t)
{
case 1: curpos.x++;
case 2: curpos.y++;
case 3: curpos.x--;
case 4: curpos.y--;
}
return curpos;
}

bool mazepath(coordinate start,coordinate end)
{
postype e;
stack<postype> pos;
coordinate curpos;
curpos=start;
int curstep=1;
do
{
if(pass(curpos))
{
footprint(curpos);

// e=(curstep,curpos,1); //改为下面3行的内容
e.ord=curstep; ////定义的postype e; 只是postype的对象,应该调用postype里面的成员进行赋值,上面错误的写法是函数赋值
e.seat=curpos; ////
e.di=1; ////
pos.push(e);
// if(curpos==end) return true; //改为下面1行的内容
if(curpos.x==end.x && curpos.y==end.y) return true; //原因同上,应该调用coordinate里面的成员才能进行比较

curpos=nextpos(curpos,1);
curstep++;
}
else
{
if(!pos.empty())
{
pos.pop();
while (e.di==4&&!pos.empty())
{
footprint(e.seat);
pos.pop();
}
if(e.di<4)
{
e.di++;
pos.push(e);
curpos=nextpos(e.seat,e.di);
}
}
}
}while(!pos.empty());
return false;
}

void main()
{
coordinate start,end;
int i,j;
b[n][n]=a[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
start.x=1; start.y=1;
end.x=8; end.y=8;
mazepath(start,end);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式