From 06f134a4038b7bfd978380ad40e1ebda87b602b8 Mon Sep 17 00:00:00 2001 From: slowy07 Date: Sun, 13 Oct 2024 05:51:23 +0700 Subject: [PATCH 1/2] fix: missing header pada folder backtracking menggunakan fungsi cstdint pada untuk memperbaiki issue pada error import builtin function uint64_t dan uint32_t Signed-off-by: slowy07 --- backtracking/subarray_sum.cpp | 1 + backtracking/wildcard_matching.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backtracking/subarray_sum.cpp b/backtracking/subarray_sum.cpp index bd13566..a73e23e 100644 --- a/backtracking/subarray_sum.cpp +++ b/backtracking/subarray_sum.cpp @@ -10,6 +10,7 @@ * array saja. */ +#include #include #include #include diff --git a/backtracking/wildcard_matching.cpp b/backtracking/wildcard_matching.cpp index af0c894..14e4a9c 100644 --- a/backtracking/wildcard_matching.cpp +++ b/backtracking/wildcard_matching.cpp @@ -1,4 +1,5 @@ #include +#include #include #include @@ -6,7 +7,7 @@ namespace backtracking { namespace wildcard_matching { std::vector> dpTable(1000, std::vector(1000, -1)); bool wildcard_matching(std::string s, std::string p, uint32_t pos1, - uint32_t pos2) { + std::uint32_t pos2) { uint32_t n = s.length(); uint32_t m = p.length(); if (pos1 == n && pos2 == m) { @@ -96,4 +97,4 @@ static void test() { int main() { test(); return 0; -} \ No newline at end of file +} From 8e2ca7868b2f1343b027b592f6b3460ec7df08f2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 12 Oct 2024 23:02:23 +0000 Subject: [PATCH 2/2] chore: clang formatter and clang-tidy fixing 038b7bfd978380ad40e1ebda87b602b8 --- backtracking/subarray_sum.cpp | 78 ++++++++-------- backtracking/wildcard_matching.cpp | 142 +++++++++++++---------------- 2 files changed, 102 insertions(+), 118 deletions(-) diff --git a/backtracking/subarray_sum.cpp b/backtracking/subarray_sum.cpp index a73e23e..fb3df35 100644 --- a/backtracking/subarray_sum.cpp +++ b/backtracking/subarray_sum.cpp @@ -10,63 +10,59 @@ * array saja. */ +#include #include #include -#include #include #include /** * @brief algoritma backtracking * @namespace backtracking - * + * */ namespace backtracking { - namespace subarray_sum{ - /** - * @brief fungsi utama untuk implementasi dari subarray sum - * @param sum adalah yang diperlukan dari setiap subarray - * @param in_arr adalh input dari array - * @return jumlah dari angka set - */ - uint64_t subarray_sum(int64_t sum, const std::vector &in_arr){ - int64_t nelement = in_arr.size(); - int64_t count_of_subset = 0; - int64_t current_sum = 0; - std::unordered_map - sumarray; - - for (int64_t i = 0; i < nelement; i++){ - current_sum += in_arr[i]; - if (current_sum == sum){ - count_of_subset++; - } +namespace subarray_sum { +/** + * @brief fungsi utama untuk implementasi dari subarray sum + * @param sum adalah yang diperlukan dari setiap subarray + * @param in_arr adalh input dari array + * @return jumlah dari angka set + */ +uint64_t subarray_sum(int64_t sum, const std::vector &in_arr) { + int64_t nelement = in_arr.size(); + int64_t count_of_subset = 0; + int64_t current_sum = 0; + std::unordered_map sumarray; - // jika seandainya current_sum lebih besar - // dari jumlah yang dibutuhkan - if (sumarray.find(current_sum - sum) != sumarray.end()){ - count_of_subset += (sumarray[current_sum - sum]); - } - sumarray[current_sum]++; - } - return count_of_subset; - } + for (int64_t i = 0; i < nelement; i++) { + current_sum += in_arr[i]; + if (current_sum == sum) { + count_of_subset++; } + + // jika seandainya current_sum lebih besar + // dari jumlah yang dibutuhkan + if (sumarray.find(current_sum - sum) != sumarray.end()) { + count_of_subset += (sumarray[current_sum - sum]); + } + sumarray[current_sum]++; + } + return count_of_subset; } +} // namespace subarray_sum +} // namespace backtracking -static void testing(){ - std::cout<<"test pertama "; - std::vector array1 = {-7, -3, -2, 5, 8}; - assert( - backtracking::subarray_sum::subarray_sum(0, array1) == 1 - ); +static void testing() { + std::cout << "test pertama "; + std::vector array1 = {-7, -3, -2, 5, 8}; + assert(backtracking::subarray_sum::subarray_sum(0, array1) == 1); - std::cout<<"berhasil!"< +#include #include -#include -#include +#include +#include namespace backtracking { namespace wildcard_matching { std::vector> dpTable(1000, std::vector(1000, -1)); bool wildcard_matching(std::string s, std::string p, uint32_t pos1, std::uint32_t pos2) { - uint32_t n = s.length(); - uint32_t m = p.length(); - if (pos1 == n && pos2 == m) { - return true; + uint32_t n = s.length(); + uint32_t m = p.length(); + if (pos1 == n && pos2 == m) { + return true; + } + if (pos1 != n && pos2 == m) { + return false; + } + if (pos1 == n && pos2 != m) { + while (pos2 < m && p[pos2] == '*') { + pos2++; } - if (pos1 != n && pos2 == m) { - return false; - } - if (pos1 == n && pos2 != m) { - while (pos2 < m && p[pos2] == '*') { - pos2++; - } - return pos2 == m; - } - if (dpTable[pos1][pos2] != -1) { - return dpTable[pos1][pos2]; - } - if (s[pos1] == p[pos2]) { - return dpTable[pos1][pos2] = - wildcard_matching(s, p, pos1 + 1, pos2 + 1); - } + return pos2 == m; + } + if (dpTable[pos1][pos2] != -1) { + return dpTable[pos1][pos2]; + } + if (s[pos1] == p[pos2]) { + return dpTable[pos1][pos2] = wildcard_matching(s, p, pos1 + 1, pos2 + 1); + } - else { - if (p[pos2] == '?') { - return dpTable[pos1][pos2] = - wildcard_matching(s, p, pos1 + 1, pos2 + 1); - } - else if (p[pos2] == '*') { - return dpTable[pos1][pos2] = - wildcard_matching(s, p, pos1, pos2 + 1) || - wildcard_matching(s, p, pos1 + 1, pos2); - } - else { - return dpTable[pos1][pos2] = 0; - } + else { + if (p[pos2] == '?') { + return dpTable[pos1][pos2] = wildcard_matching(s, p, pos1 + 1, pos2 + 1); + } else if (p[pos2] == '*') { + return dpTable[pos1][pos2] = wildcard_matching(s, p, pos1, pos2 + 1) || + wildcard_matching(s, p, pos1 + 1, pos2); + } else { + return dpTable[pos1][pos2] = 0; } + } } -} // namespace wildcard_matching -} // namespace backtracking - +} // namespace wildcard_matching +} // namespace backtracking static void test() { - std::cout << "1st test "; - std::string matching1 = "baaabab"; - std::string pattern1 = "*****ba*****ab"; - assert(backtracking::wildcard_matching::wildcard_matching(matching1, - pattern1, 0, 0) == - 1); - std::cout << "passed" << std::endl; - + std::cout << "1st test "; + std::string matching1 = "baaabab"; + std::string pattern1 = "*****ba*****ab"; + assert(backtracking::wildcard_matching::wildcard_matching(matching1, pattern1, + 0, 0) == 1); + std::cout << "passed" << std::endl; - std::cout << "2nd test "; - std::string matching2 = "baaabab"; - std::string pattern2 = "ba*****ab"; - assert(backtracking::wildcard_matching::wildcard_matching(matching2, - pattern2, 0, 0) == - 1); - std::cout << "passed" << std::endl; + std::cout << "2nd test "; + std::string matching2 = "baaabab"; + std::string pattern2 = "ba*****ab"; + assert(backtracking::wildcard_matching::wildcard_matching(matching2, pattern2, + 0, 0) == 1); + std::cout << "passed" << std::endl; - std::cout << "3rd test "; - std::string matching3 = "baaabab"; - std::string pattern3 = "ba*ab"; - assert(backtracking::wildcard_matching::wildcard_matching(matching3, - pattern3, 0, 0) == - 1); - std::cout << "passed" << std::endl; + std::cout << "3rd test "; + std::string matching3 = "baaabab"; + std::string pattern3 = "ba*ab"; + assert(backtracking::wildcard_matching::wildcard_matching(matching3, pattern3, + 0, 0) == 1); + std::cout << "passed" << std::endl; - std::cout << "4th test "; - std::string matching4 = "baaabab"; - std::string pattern4 = "a*ab"; - assert(backtracking::wildcard_matching::wildcard_matching(matching4, - pattern4, 0, 0) == - 1); - std::cout << "passed" << std::endl; + std::cout << "4th test "; + std::string matching4 = "baaabab"; + std::string pattern4 = "a*ab"; + assert(backtracking::wildcard_matching::wildcard_matching(matching4, pattern4, + 0, 0) == 1); + std::cout << "passed" << std::endl; - std::cout << "5th test "; - std::string matching5 = "baaabab"; - std::string pattern5 = "aa?ab"; - assert(backtracking::wildcard_matching::wildcard_matching(matching5, - pattern5, 0, 0) == - 1); - std::cout << "passed" << std::endl; + std::cout << "5th test "; + std::string matching5 = "baaabab"; + std::string pattern5 = "aa?ab"; + assert(backtracking::wildcard_matching::wildcard_matching(matching5, pattern5, + 0, 0) == 1); + std::cout << "passed" << std::endl; } int main() { - test(); - return 0; + test(); + return 0; }