28行出现异常“vector subscribtion out of range”????

不要绝望总会慢慢变强 2018-06-17 01:42:02
#include<iostream>
#include<vector>
#include<cstring>
using namespace std;
struct road
{
int d;
int L;
int t;
};
vector<vector<road>>G(110);
int totalcost=0;
int minlen = 1<< 30;
int totalen=0;
int visited[300];
int x[110][10010]; //花费一定时候走的最长的路
int K, N, R;
void dfs(int k)
{
if (k == N){
if (totalen < minlen) //更新minlen
minlen = totalen;
return;
}
visited[k] = 1;
for (int i = 0; i<G[k].size(); i++)
{
road r=G[k][i];
if (totalcost + r.t>K) //钱不够的话
continue;
if (totalen+r.L>=x[r.d][totalcost+r.t]) //花费一定的时候到达r.d路径最短
continue;
x[r.d][totalcost + r.t] = totalen + r.L;
if (totalen + r.L > minlen)
continue;
if (!visited[r.d])
{
visited[r.d] = 1;
totalen += r.L;
totalcost += r.t;
dfs(r.d);
visited[r.d] = 0;
totalen -= r.L;
totalcost -= r.t;

}
}
}
int main()
{
cin >> K >> N >> R;
for (int i = 0; i < R; i++)
{

int s;
road r;
cin >> s >> r.d >> r.L >> r.t;
if (s != r.d){
G[s].push_back(r);
}

}
memset(visited,0,sizeof(visited));
for (int i = 0; i < 110;i++)
for (int j = 0; j < 10100; j++)
x[i][j] = 1 << 30;
visited[1] = 1;
dfs(1);
if (minlen < (1 << 30))
cout << minlen;
else
cout << "-1";
return 0;
}
...全文
1393 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
大哥怎么你上面一幅图怎么弄出来的,我就是特别想知道内存变化
  • 打赏
  • 举报
回复
查出来了是这几行代码的问题,运行就会出现访问错误!不过我觉得没毛病啊!
int x[110][10100];
for (int i = 0; i < 110;i++)
for (int j = 0; j < 10100; j++)
x[i][j] = 1 << 30;
cout << x[5][4]<<endl;
棉猴 2018-06-22
  • 打赏
  • 举报
回复
执行完
for (int i = 0; i < 110;i++)
for (int j = 0; j < 10100; j++)
x[i][j] = 1 << 30;

以后,G好像就销毁了。
图1是执行以上代码时,G所占的内存数据,0x00DF8C54是G的内存地址

图2是执行完以上代码的内存数据

可以看出,执行完之后,G的内存数据被销毁了。
揽月凡尘 2018-06-18
  • 打赏
  • 举报
回复
数组越界,这个只能单歩调试,或者打印出来看
  • 打赏
  • 举报
回复
这个错误的意思是下标溢出了。建议单步调试、跟踪堆栈,看看怎麽回事。调试本身是学习的好机会。 for (int i = 0; i<G[k].size(); i++) { road r=G[k][i]; 。。。 G[s].push_back(r); 操作G的就这几个,请仔细检查是不是越界了。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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