i=1;
path.push_back(1);
path=[1];
backtracking(i=2);
i=2;
path.push_back(2);
path=[1,2];
backtracking(i=3);
i=3;
result.push_back([1,2]);
return;
vector<int> path;
vector<vector<int>> result;
i=3;
path.push_back(3);
path.pop_back();
递归返回
path=[1];
path=[1,3];
backtracking(i=4);
i=4;
result.push_back([1,3]);
return;
path.pop_back();
递归返回
path=[1];
i=4;
path.push_back(4);
path=[1,4];
backtracking(i=5);
i=5;
result.push_back([1,4]);
return;
path.pop_back();
递归返回
path=[1];path.pop_back();
path=[];
i=2;
path=[2];
backtracking(i=3);
i=3;
path.push_back(3);
path=[2,3];
backtracking(i=4);
i=4;
result.push_back([2,3]);
return;
path.pop_back();
递归返回
path=[2];
i=4;
path.push_back(4);
path=[2,4];
backtracking(i=5);
i=5;
result.push_back([2,4]);
return;
path.pop_back();
递归返回
path=[2];path.pop_back();
result
[[1,2], [1,3]]
result
[[1,2]]
result
[[1,2], [1,3],
[1,4]]
result
[[1,2], [1,3],
[1,4], [2,3]]
result
[[1,2], [1,3],
[1,4], [2,3],
[2,4]]
path=[];
i=3;
path.push_back(3);
path=[3];
backtracking(i=4);
i=4;
path.push_back(4);
path=[3,4];
backtracking(i=5);
i=5;
result.push([3,4]);
return;
path.pop_back();path=[3];path.pop_back();
path=[];
i=4;
path.push_back(4);
path=[4];
backtracking(i=5);
return;
result
[[1,2], [1,3],
[1,4], [2,3],
[2,4], [3,4]]
开始
递归返回
path.pop_back();
递归返回
path=[];
结束