递归中如何增加向量中局部变量的值
How to add value of local variable in vector in recursion?
我正在解决一个关于图形的任务,并使用此代码(DFS)在图形中行走时在矢量中添加值:
int matrix[N][N]; int used[N];
vector<vector<int> > list;
void dfs(int u){
used[u] = 1;
int i = 0;
for ( i = 1; i <= n; i++ )
{
if ( matrix[u][i] && !used[i] )
{
list[u].push_back(i);
dfs(i);
}
}
}
但是当我从这个列表中读取值时:
int size = list.size();
for ( int i = 1; i < size; i++ )
{
int temp_size = list[i].size();
for ( int j = 1; j <= temp_size; j++ )
{
printf("%d %dn", i, list[i][j]);
}
}
程序返回如下内容:
1 3473604
2 34736043 3473604
有什么问题吗?请帮助。
你的程序有很多错误:
使用int matrix[N][N]; int used[N];
必须用const:
初始化const int N = 0, n = 0;
不能使用:
list[u].push_back(i)
因为下标值不是数组(列表)
同理:
list[i][j] and
list[i]
和
int size = list.size();
unsigned long的值可能不适合接收类型int,因为size返回int。
哦)我犯了一个愚蠢的错误。问题是,我保持向量的值从1开始。但是在内部向量中,例如list[1],当i push_back(value)时,则该值被放置在0位置,就像list[1][0]一样。所以我需要这样重写我的循环:
int size = list.size();
for ( int i = 1; i < size; i++ )
{
int temp_size = list[i].size();
for ( int j = 0; j < temp_size; j++ )
{
printf("%d %dn", i, list[i][j]);
}
}
int j必须从0开始。谢谢大家!
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 使用的未初始化局部变量'Quick'
- 修复未初始化的局部变量错误
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++中静态方法的局部变量范围
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- 离开范围后如何保护局部变量的值?
- 局部变量名称冲突
- C++ lambda:如何'freeze'局部变量的值?
- 我应该使我的局部变量常量还是可移动的
- 将局部变量保存到全局向量中,为什么离开局部范围后可以得到这些局部变量?
- C++将局部变量添加到静态向量而不复制
- C 中向量上的非传统局部变量误差
- 将局部变量作为向量的成员传递给被调用者
- 递归中如何增加向量中局部变量的值