Enlace 216. Suma combinada [C++]

Tema Descripción

inserte la descripción de la imagen aquí

ideas para resolver problemas

Dibuje un diagrama de árbol, encuentre la condición de terminación y muestre valores innecesarios

el código

Esta pregunta puede aplicar directamente la plantilla del algoritmo de retroceso

void backtracking(参数) {
    
    
 if (终⽌条件) {
    
    
 存放结果;
 return;
 }
 for (选择:本层集合中元素(树中节点孩⼦的数量就是集合的⼤⼩)) {
    
    
 处理节点;
 backtracking(路径,选择列表); // 递归
 回溯,撤销处理结果
 }
}


Después de configurar la plantilla, encontrará que se excede el límite de tiempo

#include<bits/stdc++.h>
using namespace std;
#include<vector>
class Solution {
    
    
private:
	vector<vector<int>> result;
	vector<int> path;
	void backTracking(int k,int n,int startIndex,int sum){
    
    

			if(sum == n){
    
    
				result.push_back(path);
			}
			return;
		}
		for(int i = startIndex; i <= 9; i++){
    
    //(9-(k-path.size())+1)的意思是最多可以从哪里开始取数字
			path.push_back(i);
			sum += i;
			backTracking(k,n,i+1,sum);
			sum -= i;
			path.pop_back();
			
		}
	}
public:
	vector<vector<int>> combinationSum3(int k, int n) {
    
    
		backTracking(k,n,1,0);
		return result;
	}
};

Puede pasar después de la poda (eliminación de partes innecesarias)

#include<bits/stdc++.h>
using namespace std;
#include<vector>
class Solution {
    
    
private:
	vector<vector<int>> result;
	vector<int> path;
	void backTracking(int k,int n,int startIndex,int sum){
    
    
		if(path.size() == k){
    
    
			if (sum > n) {
    
     // 剪枝操作
				return; 
			}
			if(sum == n){
    
    
				result.push_back(path);
			}
			return;
		}
		for(int i = startIndex; i <= (9-(k-path.size())+1); i++){
    
    //(9-(k-path.size())+1)的意思是最多可以从哪里开始取数字
			path.push_back(i);
			sum += i;
			backTracking(k,n,i+1,sum);
			sum -= i;
			path.pop_back();
			
		}
	}
public:
	vector<vector<int>> combinationSum3(int k, int n) {
    
    
		backTracking(k,n,1,0);
		return result;
	}
};

Supongo que te gusta

Origin blog.csdn.net/qq_63524016/article/details/129676541
Recomendado
Clasificación