#include<vector>
#include<string.h>
#include<sstream>
#include<map>
#include<windows.h>
#include"MyStack.h"
#include"DrawUtil.h"
#include"mapdata.h"
#include <iostream.h>
#define SLEEP_MS 1000
using namespace std;
string fromIntToString(int a)
{
string res;
stringstream ss;
ss << a;
ss>> res;
return res;
}
int sequence[4][2]=
{
{0,-1},{1,0},{0,1},{-1,0}
};
int main(int argc, char *argv[])
{
std::map<string,int*>hm;
MyStack<int*>stack;
int visited[MAP_SIZE][MAP_SIZE];
memset(visited,0,MAP_SIZE*MAP_SIZE*sizeof(int));
bool flag=true;
int start[4]={0,0,0,0};
stack.push(start);
int endCol;
int endRow;
while(flag)
{
int* currentEdge=stack.pop();
int tempTarget[2]={currentEdge[2],currentEdge[3]};
if(visited[tempTarget[1]][tempTarget[0]]==1)
{
continue;
}
visited[tempTarget[1]][tempTarget[0]]=1;
hm[fromIntToString(tempTarget[1])+":"+fromIntToString(tempTarget[0])]=
new int[2]{currentEdge[1],currentEdge[0]};
Sleep(SLEEP_MS);
if(mapStatus[tempTarget[1]][tempTarget[0]]==2)
{
endCol=tempTarget[0];
endRow=tempTarget[1];
break;
}
int currCol=tempTarget[0];
int currRow=tempTarget[1];
for(int k=0;k<4;k++)
{
int* rc=sequence[k];
int i=rc[1];
int j=rc[0];
if(currRow+i>=0&&currRow<MAP_SIZE&&currCol>=0&&currCol<MAP_SIZE&&mapStatus[currRow+i][currCol+j]!=0)
{
int* tempEdge=new int[4];
tempEdge[0] = currCol;
tempEdge[1] = currRow;
tempEdge[2]=currCol+j;
tempEdge[3]=currRow+i;
stack.push(tempEdge);
}
drawMap(mapStatus,visited,true);
}
MyStack<string> pathStr;
string currP=fromIntToString(endRow)+":"+fromIntToString(endCol);
pathStr.push(currP);
while(true)
{
int* tempP=hm[currP];
currP=fromIntToString(tempP[0])+":"+fromIntToString(tempP[1]);
if(mapStatus[tempP[0]][tempP[1]]==1)
{
mapStatus[tempP[0]][tempP[1]]=4;
}
pathStr.push(currP);
if(tempP[0]==0&&tempP[1]==0)
{
break;
}
}
cout<<"=========================================="<<endl;
int count=0;
while(!pathStr.isEmpty())
{
count++;
cout<<pathStr.pop()<<"->";
if(count==10);
{
count=0;
cout<<endl;
}
}
cout<<"Finish"<<endl;
cout<<"============================================"<<endl;
drawMap(mapStatus,visited,false);
return 0;
}}
图片这里语法出错了还是什么 为何总是报括号前缺少分号呢?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- QiQaWgYu 2020-06-03 14:16关注
typedef int arrT[2];
hm[fromIntToString(tempTarget[1])+":"+fromIntToString(tempTarget[0])] = new arrT{currentEdge[1],currentEdge[0]};解决 无用评论 打赏 举报
悬赏问题
- ¥20 腾讯企业邮箱邮件可以恢复么
- ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
- ¥15 错误 LNK2001 无法解析的外部符号
- ¥50 安装pyaudiokits失败
- ¥15 计组这些题应该咋做呀
- ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
- ¥15 让node服务器有自动加载文件的功能
- ¥15 jmeter脚本回放有的是对的有的是错的
- ¥15 r语言蛋白组学相关问题
- ¥15 Python时间序列如何拟合疏系数模型