Fine tune.

This commit is contained in:
krahets
2023-07-31 03:27:26 +08:00
parent f7b827b303
commit dbe3b4d6ba
7 changed files with 14 additions and 15 deletions

View File

@ -39,7 +39,7 @@ int comp(const void *a, const void *b) {
}
/* 求解子集和 I */
vector *subsetSumINaive(vector *nums, int target) {
vector *subsetSumI(vector *nums, int target) {
vector *state = newVector(); // 状态(子集)
qsort(nums->data[0], nums->size, sizeof(int), comp); // 对 nums 进行排序
int start = 0; // 子集和
@ -63,7 +63,7 @@ int main() {
}
int target = 9;
vector *res = subsetSumINaive(vNums, target);
vector *res = subsetSumI(vNums, target);
printf("输入数组 nums = ");
printVector(vNums, printFunc);

View File

@ -6,7 +6,7 @@
#include "../utils/common.h"
/* 回溯算法:子集和 I */
/* 回溯算法:子集和 II */
void backtrack(vector *state, int target, vector *choices, int start, vector *res) {
// 子集和等于 target 时,记录解
if (target == 0) {
@ -26,7 +26,6 @@ void backtrack(vector *state, int target, vector *choices, int start, vector *re
if (target - *(int *)(choices->data[i]) < 0) {
continue;
}
// 剪枝四:如果该元素与左边元素相等,说明该搜索分支重复,直接跳过
if (i > start && *(int *)(choices->data[i]) == *(int *)(choices->data[i - 1])) {
continue;
@ -40,13 +39,13 @@ void backtrack(vector *state, int target, vector *choices, int start, vector *re
}
}
/* 用来做比较的函数 */
/* 比较规则 */
int comp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
/* 求解子集和 I */
vector *subsetSumINaive(vector *nums, int target) {
/* 求解子集和 II */
vector *subsetSumII(vector *nums, int target) {
vector *state = newVector(); // 状态(子集)
qsort(nums->data[0], nums->size, sizeof(int), comp); // 对 nums 进行排序
int start = 0; // 子集和
@ -70,7 +69,7 @@ int main() {
}
int target = 9;
vector *res = subsetSumINaive(vNums, target);
vector *res = subsetSumII(vNums, target);
printf("输入数组 nums = ");
printVector(vNums, printFunc);