diff --git a/include/solution/1039.h b/include/solution/1039.h new file mode 100644 index 0000000..8a11d06 --- /dev/null +++ b/include/solution/1039.h @@ -0,0 +1,14 @@ +// This file is generated by mkfile.py +// Date: 2025-09-29 + +#ifndef INC_1039_H +#define INC_1039_H +#ifdef __cplusplus +extern "C" +{ +#endif + int minScoreTriangulation(int *values, int valuesSize); +#ifdef __cplusplus +} +#endif +#endif // INC_1039_H diff --git a/src/1039.c b/src/1039.c new file mode 100644 index 0000000..d849658 --- /dev/null +++ b/src/1039.c @@ -0,0 +1,30 @@ +// This file is generated by mkfile.py +// Date: 2025-09-29 + +#include +#include + +#define min(x, y) (x) < (y) ? (x) : (y) + +int minScoreTriangulation(int *values, int valuesSize) +{ + int dp[valuesSize][valuesSize]; + for (int i = 0; i < valuesSize; i++) + for (int j = 0; j < valuesSize; j++) + dp[i][j] = 0; + + for (int len = 2; len < valuesSize; len++) + { + for (int i = 0; i + len < valuesSize; i++) + { + int j = i + len; + dp[i][j] = INT_MAX; + + for (int k = i + 1; k < j; k++) + { + dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j] + values[i] * values[j] * values[k]); + } + } + } + return dp[0][valuesSize - 1]; +} \ No newline at end of file diff --git a/tests/test_1039.cpp b/tests/test_1039.cpp new file mode 100644 index 0000000..193b49f --- /dev/null +++ b/tests/test_1039.cpp @@ -0,0 +1,45 @@ +// This file is generated by mkfile.py +// Date: 2025-09-29 + +#include +#include + + +class MinScoreTriangulationTest : public ::testing::Test +{ + protected: + void AssertMinScoreTriangulation(std::vector input, int expected) + { + int *values = new int[input.size()]; + std::copy(input.begin(), input.end(), values); + + int result = minScoreTriangulation(values, input.size()); + ASSERT_EQ(result, expected); + + delete[] values; + } +}; + +// 示例 1 +TEST_F(MinScoreTriangulationTest, Example1) +{ + // 输入: values = [1,2,3] + // 输出: 6 + AssertMinScoreTriangulation({1, 2, 3}, 6); +} + +// 示例 2 +TEST_F(MinScoreTriangulationTest, Example2) +{ + // 输入: values = [3,7,4,5] + // 输出: 144 + AssertMinScoreTriangulation({3, 7, 4, 5}, 144); +} + +// 示例 3 +TEST_F(MinScoreTriangulationTest, Example3) +{ + // 输入: values = [1,3,1,4,1,5] + // 输出: 13 + AssertMinScoreTriangulation({1, 3, 1, 4, 1, 5}, 13); +} \ No newline at end of file