#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]
{
currCol,currRow,currCol+j,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条回答
- threenewbee 2020-06-03 10:37关注
不支持这种初始化的形式
你就写
int * tempEdge = new int[4];
tempEdge[0] = currCol;
tempEdge[1] = currRow;
...本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题