diff --git "a/1\350\264\252\345\277\203 \345\217\266\345\200\274\347\232\204\346\234\200\345\260\217\347\224\237\346\210\220\346\240\221.png" "b/1\350\264\252\345\277\203 \345\217\266\345\200\274\347\232\204\346\234\200\345\260\217\347\224\237\346\210\220\346\240\221.png"
deleted file mode 100644
index 4c7dcd6378df952474cb08dbf07abbe5546608b5..0000000000000000000000000000000000000000
Binary files "a/1\350\264\252\345\277\203 \345\217\266\345\200\274\347\232\204\346\234\200\345\260\217\347\224\237\346\210\220\346\240\221.png" and /dev/null differ
diff --git "a/2.\350\264\252\345\277\203\357\274\214\344\270\211\350\247\222\345\275\242\346\234\200\345\244\247\345\221\250\351\225\277.png" "b/2.\350\264\252\345\277\203\357\274\214\344\270\211\350\247\222\345\275\242\346\234\200\345\244\247\345\221\250\351\225\277.png"
deleted file mode 100644
index 04169b2a7f7593449ddc7ba88050fb494239bdb6..0000000000000000000000000000000000000000
Binary files "a/2.\350\264\252\345\277\203\357\274\214\344\270\211\350\247\222\345\275\242\346\234\200\345\244\247\345\221\250\351\225\277.png" and /dev/null differ
diff --git "a/3\345\233\236\346\272\257N\347\232\207\345\220\216.png" "b/3\345\233\236\346\272\257N\347\232\207\345\220\216.png"
deleted file mode 100644
index 70ba38e6f879d89e9865dce7566522eb72feec23..0000000000000000000000000000000000000000
Binary files "a/3\345\233\236\346\272\257N\347\232\207\345\220\216.png" and /dev/null differ
diff --git a/alg.md b/alg.md
deleted file mode 100644
index 97cec80b834d4fad19ee667d9f8bdf0c2dc87599..0000000000000000000000000000000000000000
--- a/alg.md
+++ /dev/null
@@ -1,300 +0,0 @@
-# 解题报告
-
-## 1.叶值的最小代价生成树(1130贪心)
-
-### 题目描述
-
-给你一个正整数数组 arr,考虑所有满足以下条件的二叉树:
-
-每个节点都有 0 个或是 2 个子节点。
-数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。
-每个非叶节点的值等于其左子树和右子树中叶节点的最大值的乘积。
-在所有这样的二叉树中,返回每个非叶节点的值的最小可能总和。这个和的值是一个 32 位整数。
-
-如果一个节点有 0 个子节点,那么该节点为叶节点。
-
-来源:力扣(LeetCode)1130
-
-### 思路分析
-
-该算法采用了贪心算法的思想,每次选择左右子节点中较小的那个值,保证了当前节点的值尽量小,从而使得所有非叶子节点的值的和最小。具体实现时,使用单调栈来维护当前节点的左子树,每次遍历到一个新的数时,将栈顶元素和当前数作为左右子节点,计算它们的乘积并加入结果中,然后将当前数压入栈中。如果当前数比栈顶元素小,则将栈顶元素和之后的节点组成新的左子树,直到栈顶元素比当前数大为止。最后,将栈中剩余的节点两两组成左右子节点,计算它们的乘积并加入结果中。
-
-其中mctFromLeafValues函数的作用是对于一个非空的整数数组arr,构建一颗二叉树,使得每个叶子节点的值为arr中的一个元素,并且每个非叶子节点的值为其左右子节点中较大值的乘积,求得所有可能的二叉树中,所有非叶子节点的值的和的最小值。
-函数采用单调栈的方法来处理,具体来说,维护一个单调递减的栈stack,将arr中的元素从左往右加入栈中。对于每个新元素num,如果栈顶元素stack[-1]比num小,就将栈顶元素取出,作为左右子节点中较小值,num作为较大值,计算它们的乘积,并加入到结果res中。这个过程相当于构建一颗二叉树中的一个子树,其中栈顶元素为左子节点,num为右子节点。因为我们要使得非叶子节点的值最小,所以应该让左右子节点的值尽量接近,这也是为什么要取较小值作为左子节点的原因。
-
-### 代码实现
-
-```python
-from random import randint
-def generate_data():
- n = random.randint(2, 100)
- arr = [random.randint(1, 100) for _ in range(n)]
- return (arr, )
-from typing import List
-class Solution:
- def mctFromLeafValues(self, arr: List[int]) -> int:
- res = 0
- stack = [float('inf')]
- for num in arr:
- while stack[-1] <= num:
- mid = stack.pop()
- res += mid * min(stack[-1], num)
- stack.append(num)
- while len(stack) > 2:
- res += stack.pop() * stack[-1]
- return res
-```
-
-## 数据测试
-
-为了测试算法的鲁棒性,我们需要生成一些随机的数据进行测试。生成数据的思路如下:
-
-1. 极端情况:输入为空数组,期望输出为0;输入只有一个元素,期望输出为0;
-
-2. 特殊情况:输入数组中所有元素都相等,期望输出为元素个数乘以该元素的值;输入数组按照升序或降序排列,期望输出为升序排列时的结果;
-
-3. 随机情况:随机生成不同长度的输入数组,每个元素随机取值,期望输出的结果可以通过暴力枚举得出,检查算法输出是否与暴力算法输出一致。
-
-4. 边界情况:输入数组的长度为2,期望输出为两个元素的乘积;输入数组的长度为3,期望输出为两个元素的乘积加上第三个元素的值;
-
-5. 各种组合情况:输入数组中既有奇数,又有偶数;输入数组中有正数和负数等。
-
-6. 我们可以通过构造一些特定的测试用例来测试该算法的正确性,例如:
-
- 输入[1,2,3,4,5],期望输出 33,此时最优的构建方法是:
-
- 15
- / \
- 10 5
- / \
- 6 4
- / \
- 2 3
-
- 输入[3,2,5,4,1],期望输出 45,此时最优的构建方法是:
-
- 27
- / \
- 15 12
- / \
- 6 9
- / \
- 3 2
-
- 输入[5,4,3,2,1],期望输出 40,此时最优的构建方法是:
-
- 26
- / \
- 12 14
- / \
- 4 8
- / \
- 2 2
-
- 通过以上测试用例,我们可以验证该算法的正确性。
-
- ## 测试示例
-
- 下面是一个测试代码的例子:
-
- ```python
- def test():
- solution = Solution()
- for i in range(10):
- arr, = generate_data()
- res = solution.mctFromLeafValues(arr)
- print("Test case ", i + 1, ":\narr = ", arr, "\nres = ", res, "\n")
- if __name__ == "__main__":
- test()
- ```
-
-
-
- 
-
-### 复杂度分析
-
-- 该算法需要遍历整个输入数组,因此时间复杂度为O(n)。
-- 空间复杂度:每个数最多会被压入和弹出一次栈,因此空间复杂度也为O(n)。
-
-## 2.三角形的最大周长(976贪心)
-
-### 题目描述
-
-给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。
-
-### 思路分析
-
-- 首先将数组 A 从大到小排序;
-- 然后从 A 的第一个元素开始往后遍历,对于 A 中的每一个元素,判断其和后面的两个元素是否可以构成三角形,若可以,则返回这三条边的周长;
-- 若遍历完整个数组都没有找到可以构成三角形的边,则返回 0。
-
-### 代码实现
-
-```python
-from random import randint
-def generate_data():
- n = random.randint(3, 10000)
- A = [random.randint(1, 10**6) for _ in range(n)]
- return (A, )
-from typing import List
-class Solution:
- class Solution:
- def largestPerimeter(self, A: List[int]) -> int:
- A.sort(reverse=True)
- for i in range(len(A)-2):
- if A[i] List[List[str]]:
- # 初始化棋盘,全部填充为 .
- board = [['.' for _ in range(n)] for _ in range(n)]
- res = []
- # 已占用的列、正斜线、反斜线
- cols, diag1, diag2 = set(), set(), set()
- def dfs(row):
- # 如果已经遍历到最后一行,则将当前摆放情况加入结果集
- if row == n:
- res.append(["".join(row) for row in board])
- return
- # 遍历每一列
- for col in range(n):
- # 判断当前位置是否合法
- if col not in cols and row + col not in diag1 and row - col not in diag2:
- # 如果当前位置合法,则将皇后放置在该位置,并更新已占用的列、正斜线、反斜线
- board[row][col] = 'Q'
- cols.add(col)
- diag1.add(row + col)
- diag2.add(row - col)
- # 递归到下一行
- dfs(row + 1)
- # 回溯,将皇后从该位置移除,并恢复已占用的列、正斜线、反斜线
- board[row][col] = '.'
- cols.remove(col)
- diag1.remove(row + col)
- diag2.remove(row - col)
- dfs(0)
- return res
-def generate_data():
- n = random.randint(1, 10)
- return n
-```
-
-## 数据测试
-
-数据生成函数 `generate_data()` 的思路很简单,只需要随机生成一个整数 `n`,表示棋盘的大小,即皇后的数量。该函数返回值即为 `n`。在测试时,会多次调用该函数,每次生成一个不同的 `n`。
-
-## 测试示例
-
- 下面是一个测试代码的例子:
-
-```python
-def test_data(n):
- s = Solution()
- res = s.solveNQueens(n)
- expected = math.factorial(n) if n <= 10 else None
- if len(res) == expected:
- print("test case passed: n = %d, num of solutions = %d" % (n, len(res)))
- else:
- print("test case failed: n = %d, num of solutions = %d, expected = %s" % (n, len(res), expected))
-if __name__ == "__main__":
- for i in range(10):
- n = generate_data()
- print("testing case #%d: n = %d" % (i+1, n))
- test_data(n)
-```
-
-
-
-### 复杂度分析
-
-- 时间复杂度:***O(n^n)***,算法的时间复杂度主要取决于在回溯过程中遍历的次数。对于每一行,最多需要遍历 $n$ 列,因此总的遍历次数为***O(n^n)*** ,其中 n 表示棋盘的大小,即皇后的数量。
-- 空间复杂度:***O(n^n)***,需要常数个变量用于选取最大值,需要使用的空间取决于递归栈的深度。此外,对于每个合法的摆放位置,需要将结果保存在结果集中,因此空间复杂度也为***O(n^n)***。总的时间复杂度和空间复杂度都非常高,限制了算法的使用场景。
-
-## 心得体会
-
-在使用 Jupyter Notebook 写完这些道题目后,我对 Jupyter Notebook 的使用更加熟练了。Jupyter Notebook 是一个非常好用的交互式开发工具,可以轻松地将代码、文本、图片、公式等内容集成在一起,方便编写和展示。在编写算法代码时,我可以通过 Markdown 单元格编写算法思路分析和时间复杂度分析,使得代码更加易于理解。同时,我还可以在代码单元格中使用代码高亮、代码补全、代码调试等功能,提高了编写代码的效率。
-此外,我还使用 Jupyter Notebook 编写了数据生成函数和测试函数,并将它们封装成了一个完整的 Jupyter Notebook 工程文件块,方便测试和演示。这种方式比直接在终端中执行代码更加直观,可以看到每个测试用例的结果,方便进行调试和优化。
-总的来说,Jupyter Notebook 是一个非常好用的工具,特别适合编写和展示算法代码。它具有交互性强、可视化好、易于编写和展示等特点,可以提高编程效率和代码可读性。
-
-## 实验环境
-
-win10
-
-python3.11
-
-jupyter notebook
-
-git.
\ No newline at end of file
diff --git a/alg1.py b/alg1.py
deleted file mode 100644
index c2e979693982875d14ae28886451bf8a42ba7315..0000000000000000000000000000000000000000
--- a/alg1.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from typing import List
-class Solution:
- def mctFromLeafValues(self, arr: List[int]) -> int:
- res = 0
- stack = [float('inf')]
- for num in arr:
- while stack[-1] <= num:
- mid = stack.pop()
- res += mid * min(stack[-1], num)
- stack.append(num)
- while len(stack) > 2:
- res += stack.pop() * stack[-1]
- return res
\ No newline at end of file
diff --git a/alg2.py b/alg2.py
deleted file mode 100644
index 5d90626948e5b8c37187c67b5907756ee65f0cd3..0000000000000000000000000000000000000000
--- a/alg2.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from typing import List
-class Solution:
- def largestPerimeter(self, A: List[int]) -> int:
- A.sort(reverse=True)
- for i in range(len(A)-2):
- if A[i] List[List[str]]:
- # 初始化棋盘,全部填充为 .
- board = [['.' for _ in range(n)] for _ in range(n)]
- res = []
- # 已占用的列、正斜线、反斜线
- cols, diag1, diag2 = set(), set(), set()
- def dfs(row):
- # 如果已经遍历到最后一行,则将当前摆放情况加入结果集
- if row == n:
- res.append(["".join(row) for row in board])
- return
- # 遍历每一列
- for col in range(n):
- # 判断当前位置是否合法
- if col not in cols and row + col not in diag1 and row - col not in diag2:
- # 如果当前位置合法,则将皇后放置在该位置,并更新已占用的列、正斜线、反斜线
- board[row][col] = 'Q'
- cols.add(col)
- diag1.add(row + col)
- diag2.add(row - col)
- # 递归到下一行
- dfs(row + 1)
- # 回溯,将皇后从该位置移除,并恢复已占用的列、正斜线、反斜线
- board[row][col] = '.'
- cols.remove(col)
- diag1.remove(row + col)
- diag2.remove(row - col)
- dfs(0)
- return res
\ No newline at end of file
diff --git a/fenzhi/1.png b/fenzhi/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f6530dbde50bf37e059b75a26ce6a729e5ccb09
Binary files /dev/null and b/fenzhi/1.png differ
diff --git a/fenzhi/2.png b/fenzhi/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9d8a691d7e986745761a6c6f2634df444cf3651
Binary files /dev/null and b/fenzhi/2.png differ
diff --git a/fenzhi/alg.h b/fenzhi/alg.h
new file mode 100644
index 0000000000000000000000000000000000000000..e6118a9c360495d0d50a29a66524fc7bbc696993
--- /dev/null
+++ b/fenzhi/alg.h
@@ -0,0 +1,34 @@
+#include
+#include
+#include
+#inclue
+#include"gen.h"
+using namespace std;
+
+class Solution {
+ int count_in_range(vector& nums, int target, int lo, int hi) {
+ int count = 0;
+ for (int i = lo; i <= hi; ++i)
+ if (nums[i] == target)
+ ++count;
+ return count;
+ }
+ int majority_element_rec(vector& nums, int lo, int hi) {
+ if (lo == hi)
+ return nums[lo];
+ int mid = (lo + hi) / 2;
+ int left_majority = majority_element_rec(nums, lo, mid);
+ int right_majority = majority_element_rec(nums, mid + 1, hi);
+ if (count_in_range(nums, left_majority, lo, hi) > (hi - lo + 1) / 2)
+ return left_majority;
+ if (count_in_range(nums, right_majority, lo, hi) > (hi - lo + 1) / 2)
+ return right_majority;
+ return -1;
+ }
+public:
+ int majorityElement(vector& nums) {
+ return majority_element_rec(nums, 0, nums.size() - 1);
+ }
+};
+
+
diff --git a/fenzhi/alg.md b/fenzhi/alg.md
new file mode 100644
index 0000000000000000000000000000000000000000..0630e5cbf06ff82ac8fefdedd2c4344d159f1cbd
--- /dev/null
+++ b/fenzhi/alg.md
@@ -0,0 +1,91 @@
+## 多数元素
+
+#### 1 问题建模(描述)
+
+ 给定一个大小为 `n` 的数组 `nums` ,返回其中的多数元素。多数元素是指在数组中出现次数 **大于** `⌊ n/2 ⌋` 的元素。
+
+示例:
+
+```
+输入:nums = [3,2,3]
+输出:3
+```
+
+```
+输入:nums = [2,2,1,1,1,2,2]
+输出:2
+```
+
+
+
+#### 2 数据生成(初始数据生成)
+
+```c++
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//生成范围在l~r的随机数
+{
+ srand(time(0)); //设置时间种子
+ for(int i=0;i
+#include
+#include
+#inclue
+#include"gen.h"
+using namespace std;
+
+class Solution {
+ int count_in_range(vector& nums, int target, int lo, int hi) {
+ int count = 0;
+ for (int i = lo; i <= hi; ++i)
+ if (nums[i] == target)
+ ++count;
+ return count;
+ }
+ int majority_element_rec(vector& nums, int lo, int hi) {
+ if (lo == hi)
+ return nums[lo];
+ int mid = (lo + hi) / 2;
+ int left_majority = majority_element_rec(nums, lo, mid);
+ int right_majority = majority_element_rec(nums, mid + 1, hi);
+ if (count_in_range(nums, left_majority, lo, hi) > (hi - lo + 1) / 2)
+ return left_majority;
+ if (count_in_range(nums, right_majority, lo, hi) > (hi - lo + 1) / 2)
+ return right_majority;
+ return -1;
+ }
+public:
+ int majorityElement(vector& nums) {
+ return majority_element_rec(nums, 0, nums.size() - 1);
+ }
+};
+
+
+```
+
+
+
+#### 4 数据测试(测试截图)
+
+
+
+
\ No newline at end of file
diff --git a/fenzhi/gen.h b/fenzhi/gen.h
new file mode 100644
index 0000000000000000000000000000000000000000..4b1e54d3245e3385385e56d2404080a2536d1cc3
--- /dev/null
+++ b/fenzhi/gen.h
@@ -0,0 +1,14 @@
+#include
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//ɷΧl~r
+{
+ srand(time(0)); //ʱ
+ for(int i=0;i
+using namespace std;
+int main()
+{
+ int sum;
+ cin>>sum;
+ for(int i=0;i *a;
+ Random(a,50,0,100);
+ Solution A;
+ A.majorityElement(a);
+ }
+ return 0;
+}
diff --git a/gen1.py b/gen1.py
deleted file mode 100644
index d747c7c8047d9cf05ac0b8e7ebd02b757f06eed1..0000000000000000000000000000000000000000
--- a/gen1.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# 数据生成函数
-import random
-def generate_data():
- n = random.randint(2, 100)
- arr = [random.randint(1, 100) for _ in range(n)]
- return (arr, )
-
-
-
diff --git a/gen2.py b/gen2.py
deleted file mode 100644
index d9ba82f3ef7281c513ba338ce041a2eb0767b990..0000000000000000000000000000000000000000
--- a/gen2.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import random
-def generate_data():
- n = random.randint(3, 100)
- A = [random.randint(1, 10**6) for _ in range(n)]
- return (A, )
-
-
diff --git a/gen3.py b/gen3.py
deleted file mode 100644
index 7b87fc08ef1926cb19244886314291a92b1787ec..0000000000000000000000000000000000000000
--- a/gen3.py
+++ /dev/null
@@ -1,6 +0,0 @@
-def generate_data():
- n = random.randint(1, 10)
- return n
-
-
-
diff --git a/huisu/1.png b/huisu/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..f91ab1b226045bc71215388112d89edaf8a8099c
Binary files /dev/null and b/huisu/1.png differ
diff --git a/huisu/2.png b/huisu/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c85db95abf95aa043a69b1033dfce61e31b70895
Binary files /dev/null and b/huisu/2.png differ
diff --git a/huisu/alg.assets/1.png b/huisu/alg.assets/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..f91ab1b226045bc71215388112d89edaf8a8099c
Binary files /dev/null and b/huisu/alg.assets/1.png differ
diff --git a/huisu/alg.assets/2.png b/huisu/alg.assets/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c85db95abf95aa043a69b1033dfce61e31b70895
Binary files /dev/null and b/huisu/alg.assets/2.png differ
diff --git a/huisu/alg.h b/huisu/alg.h
new file mode 100644
index 0000000000000000000000000000000000000000..aa2f4e4a71e0acd98d2e45f0b6a26833be773ea7
--- /dev/null
+++ b/huisu/alg.h
@@ -0,0 +1,35 @@
+#include
+#include
+#include
+#inclue
+#include"gen.h"
+using namespace std;
+
+class Solution {
+public:
+ void dfs(vector& candidates, int target, vector>& ans, vector& combine, int idx) {
+ if (idx == candidates.size()) {
+ return;
+ }
+ if (target == 0) {
+ ans.emplace_back(combine);
+ return;
+ }
+ // ֱ
+ dfs(candidates, target, ans, combine, idx + 1);
+ // ѡǰ
+ if (target - candidates[idx] >= 0) {
+ combine.emplace_back(candidates[idx]);
+ dfs(candidates, target - candidates[idx], ans, combine, idx);
+ combine.pop_back();
+ }
+ }
+
+ vector> combinationSum(vector& candidates, int target) {
+ vector> ans;
+ vector combine;
+ dfs(candidates, target, ans, combine, 0);
+ return ans;
+ }
+};
+
diff --git a/huisu/alg.md b/huisu/alg.md
new file mode 100644
index 0000000000000000000000000000000000000000..c19133c02fe08d69244dc77099b7e57f60f7f812
--- /dev/null
+++ b/huisu/alg.md
@@ -0,0 +1,101 @@
+## 组合总数
+
+#### 1 问题建模(描述)
+
+给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
+
+candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。
+
+对于给定的输入,保证和为 target 的不同组合数少于 150 个。
+
+示例:
+
+```
+输入:candidates = [2,3,6,7], target = 7
+输出:[[2,2,3],[7]]
+解释:
+2 和 3 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
+7 也是一个候选, 7 = 7 。
+仅有这两种组合。
+
+```
+
+```
+输入: candidates = [2,3,5], target = 8
+输出: [[2,2,2,2],[2,3,3],[3,5]]
+```
+
+
+
+#### 2 数据生成(初始数据生成)
+
+```c++
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//生成范围在l~r的随机数
+{
+ srand(time(0)); //设置时间种子
+ for(int i=0;i& candidates, int target, vector>& ans, vector& combine, int idx) {
+ if (idx == candidates.size()) {
+ return;
+ }
+ if (target == 0) {
+ ans.emplace_back(combine);
+ return;
+ }
+ // 直接跳过
+ dfs(candidates, target, ans, combine, idx + 1);
+ // 选择当前数
+ if (target - candidates[idx] >= 0) {
+ combine.emplace_back(candidates[idx]);
+ dfs(candidates, target - candidates[idx], ans, combine, idx);
+ combine.pop_back();
+ }
+ }
+
+ vector> combinationSum(vector& candidates, int target) {
+ vector> ans;
+ vector combine;
+ dfs(candidates, target, ans, combine, 0);
+ return ans;
+ }
+};
+```
+
+
+
+#### 4 数据测试(测试截图)
+
+
+
+
\ No newline at end of file
diff --git a/huisu/gen.h b/huisu/gen.h
new file mode 100644
index 0000000000000000000000000000000000000000..4b1e54d3245e3385385e56d2404080a2536d1cc3
--- /dev/null
+++ b/huisu/gen.h
@@ -0,0 +1,14 @@
+#include
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//ɷΧl~r
+{
+ srand(time(0)); //ʱ
+ for(int i=0;i
+using namespace std;
+int main()
+{
+ int sum;
+ cin>>sum;
+ for(int i=0;i *a;
+ Random(a,50,0,100);
+ int target=random(1,50);
+ vector> ans;
+ vector combine;
+ int idx=0;
+ Solution A;
+ A.(a,target *ans,*combine,idx);
+ }
+
+ return 0;
+}
diff --git a/huisu/test.exe b/huisu/test.exe
new file mode 100644
index 0000000000000000000000000000000000000000..334a37070763e5515a88a2110ded17cbdb7ad69a
Binary files /dev/null and b/huisu/test.exe differ
diff --git a/tanxin/1.png b/tanxin/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7780c7be1802e28b5de3cc5422346999166e85f
Binary files /dev/null and b/tanxin/1.png differ
diff --git a/tanxin/2.png b/tanxin/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf5f16f132a709382e423af531c28ad3a8409464
Binary files /dev/null and b/tanxin/2.png differ
diff --git a/tanxin/alg.assets/1.png b/tanxin/alg.assets/1.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7780c7be1802e28b5de3cc5422346999166e85f
Binary files /dev/null and b/tanxin/alg.assets/1.png differ
diff --git a/tanxin/alg.assets/2.png b/tanxin/alg.assets/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..cf5f16f132a709382e423af531c28ad3a8409464
Binary files /dev/null and b/tanxin/alg.assets/2.png differ
diff --git a/tanxin/alg.h b/tanxin/alg.h
new file mode 100644
index 0000000000000000000000000000000000000000..24300680ff242ac1ab23e1368f2f9b3019517b62
--- /dev/null
+++ b/tanxin/alg.h
@@ -0,0 +1,20 @@
+#include
+#include
+#include
+#inclue
+#include"gen.h"
+using namespace std;
+
+class Solution {
+public:
+ bool canJump(vector& nums) {
+ int k = 0;
+ for (int i = 0; i < nums.size(); i++) {
+ if (i > k) return false;
+ k = max(k, i + nums[i]);
+ }
+ return true;
+ }
+};
+
+
diff --git a/tanxin/alg.md b/tanxin/alg.md
new file mode 100644
index 0000000000000000000000000000000000000000..240ed63d4dcee1c0e3403d02555eef1d5c772021
--- /dev/null
+++ b/tanxin/alg.md
@@ -0,0 +1,81 @@
+## 跳跃游戏
+
+#### 1 问题建模(描述)
+
+给定一个非负整数数组 `nums` ,你最初位于数组的 **第一个下标** 。
+
+数组中的每个元素代表你在该位置可以跳跃的最大长度。
+
+判断你是否能够到达最后一个下标。
+
+示例:
+
+```
+输入:nums = [2,3,1,1,4]
+输出:true
+解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。
+```
+
+```
+输入:nums = [3,2,1,0,4]
+输出:false
+解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。
+
+```
+
+
+
+#### 2 数据生成(初始数据生成)
+
+```c++
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//生成范围在l~r的随机数
+{
+ srand(time(0)); //设置时间种子
+ for(int i=0;i
+#include
+#include
+#inclue
+#include"gen.h"
+using namespace std;
+class Solution {
+public:
+ bool canJump(vector& nums) {
+ int k = 0;
+ for (int i = 0; i < nums.size(); i++) {
+ if (i > k) return false;
+ k = max(k, i + nums[i]);
+ }
+ return true;
+ }
+};
+
+
+```
+
+
+
+#### 4 数据测试(测试截图)
+
+
diff --git a/tanxin/gen.h b/tanxin/gen.h
new file mode 100644
index 0000000000000000000000000000000000000000..4b1e54d3245e3385385e56d2404080a2536d1cc3
--- /dev/null
+++ b/tanxin/gen.h
@@ -0,0 +1,14 @@
+#include
+#include
+#include
+#inclue
+using namespace std;
+
+void Random(vector *a,int n,int l,int r)//ɷΧl~r
+{
+ srand(time(0)); //ʱ
+ for(int i=0;i
+using namespace std;
+int main()
+{
+ int sum;
+ cin>>sum;
+ for(int i=0;i *a;
+ Random(a,50,0,100);
+ Solution A;
+ A.canJump(a);
+ }
+ return 0;
+}
diff --git a/tanxin/test.exe b/tanxin/test.exe
new file mode 100644
index 0000000000000000000000000000000000000000..ffb276636aeee8b97f6e0087cc2f40fffc8d1dcc
Binary files /dev/null and b/tanxin/test.exe differ
diff --git a/test1.py b/test1.py
deleted file mode 100644
index e14a46961611324e2cc0c8855de4e4ce2d9e50fa..0000000000000000000000000000000000000000
--- a/test1.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import gen
-import alg
-
-# 数据测试函数
-def test():
- solution = Solution()
- for i in range(10):
- arr, = generate_data()
- res = solution.mctFromLeafValues(arr)
- print("Test case ", i + 1, ":\narr = ", arr, "\nres = ", res, "\n")
-test()
\ No newline at end of file
diff --git a/test2.py b/test2.py
deleted file mode 100644
index 8cef9bd7d6bb74f23477379536875f2bfeb7008d..0000000000000000000000000000000000000000
--- a/test2.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import gen
-import alg
-# 数据测试函数
-def test():
- solution = Solution()
- for i in range(10):
- A, = generate_data()
- res = solution.largestPerimeter(A)
- print("Test case ", i + 1, ":\nA = ", A, "\nres = ", res, "\n")
-if __name__ == "__main__":
- test()
\ No newline at end of file
diff --git a/test3.py b/test3.py
deleted file mode 100644
index a1e7293616c3f8424dda0469352d5a0f9d26829e..0000000000000000000000000000000000000000
--- a/test3.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import gen
-import alg
-
-def test_data(n):
- s = Solution()
- res = s.solveNQueens(n)
- expected = math.factorial(n) if n <= 10 else None
- if len(res) == expected:
- print("test case passed: n = %d, num of solutions = %d" % (n, len(res)))
- else:
- print("test case failed: n = %d, num of solutions = %d, expected = %s" % (n, len(res), expected))
-if __name__ == "__main__":
- for i in range(10):
- n = generate_data()
- print("testing case #%d: n = %d" % (i+1, n))
- test_data(n)
\ No newline at end of file