递归中如何增加向量中局部变量的值

How to add value of local variable in vector in recursion?

本文关键字:向量 局部变量 何增加 递归 增加      更新时间:2023-10-16

我正在解决一个关于图形的任务,并使用此代码(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开始。谢谢大家!