mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 12:58:42 +08:00
Sort the coding languages by applications. (#721)
This commit is contained in:
@ -32,10 +32,10 @@ $$
|
||||
|
||||
对比两道题目的代码,状态转移中有一处从 $i-1$ 变为 $i$ ,其余完全一致。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="unbounded_knapsack.java"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDP}
|
||||
```python title="unbounded_knapsack.py"
|
||||
[class]{}-[func]{unbounded_knapsack_dp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -44,10 +44,16 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="unbounded_knapsack.py"
|
||||
[class]{}-[func]{unbounded_knapsack_dp}
|
||||
```java title="unbounded_knapsack.java"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="unbounded_knapsack.cs"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -56,6 +62,12 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="unbounded_knapsack.swift"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="unbounded_knapsack.js"
|
||||
@ -68,30 +80,6 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="unbounded_knapsack.c"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="unbounded_knapsack.cs"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="unbounded_knapsack.swift"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="unbounded_knapsack.zig"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="unbounded_knapsack.dart"
|
||||
@ -104,6 +92,18 @@ $$
|
||||
[class]{}-[func]{unbounded_knapsack_dp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="unbounded_knapsack.c"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="unbounded_knapsack.zig"
|
||||
[class]{}-[func]{unboundedKnapsackDP}
|
||||
```
|
||||
|
||||
### 空间优化
|
||||
|
||||
由于当前状态是从左边和上边的状态转移而来,**因此空间优化后应该对 $dp$ 表中的每一行采取正序遍历**。
|
||||
@ -130,10 +130,10 @@ $$
|
||||
|
||||
代码实现比较简单,仅需将数组 `dp` 的第一维删除。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="unbounded_knapsack.java"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDPComp}
|
||||
```python title="unbounded_knapsack.py"
|
||||
[class]{}-[func]{unbounded_knapsack_dp_comp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -142,10 +142,16 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="unbounded_knapsack.py"
|
||||
[class]{}-[func]{unbounded_knapsack_dp_comp}
|
||||
```java title="unbounded_knapsack.java"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="unbounded_knapsack.cs"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -154,6 +160,12 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="unbounded_knapsack.swift"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="unbounded_knapsack.js"
|
||||
@ -166,30 +178,6 @@ $$
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="unbounded_knapsack.c"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="unbounded_knapsack.cs"
|
||||
[class]{unbounded_knapsack}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="unbounded_knapsack.swift"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="unbounded_knapsack.zig"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="unbounded_knapsack.dart"
|
||||
@ -202,6 +190,18 @@ $$
|
||||
[class]{}-[func]{unbounded_knapsack_dp_comp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="unbounded_knapsack.c"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="unbounded_knapsack.zig"
|
||||
[class]{}-[func]{unboundedKnapsackDPComp}
|
||||
```
|
||||
|
||||
## 零钱兑换问题
|
||||
|
||||
背包问题是一大类动态规划问题的代表,其拥有很多的变种,例如零钱兑换问题。
|
||||
@ -251,10 +251,10 @@ $$
|
||||
|
||||
最后返回前,判断 $dp[n, amt]$ 是否等于 $amt + 1$ ,若是则返回 $-1$ ,代表无法凑出目标金额。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="coin_change.java"
|
||||
[class]{coin_change}-[func]{coinChangeDP}
|
||||
```python title="coin_change.py"
|
||||
[class]{}-[func]{coin_change_dp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -263,10 +263,16 @@ $$
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="coin_change.py"
|
||||
[class]{}-[func]{coin_change_dp}
|
||||
```java title="coin_change.java"
|
||||
[class]{coin_change}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change.cs"
|
||||
[class]{coin_change}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -275,6 +281,12 @@ $$
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change.swift"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="coin_change.js"
|
||||
@ -287,30 +299,6 @@ $$
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change.c"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change.cs"
|
||||
[class]{coin_change}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change.swift"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change.zig"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="coin_change.dart"
|
||||
@ -323,6 +311,18 @@ $$
|
||||
[class]{}-[func]{coin_change_dp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change.c"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change.zig"
|
||||
[class]{}-[func]{coinChangeDP}
|
||||
```
|
||||
|
||||
下图展示了零钱兑换的动态规划过程,和完全背包非常相似。
|
||||
|
||||
=== "<1>"
|
||||
@ -374,10 +374,10 @@ $$
|
||||
|
||||
零钱兑换的空间优化的处理方式和完全背包一致。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="coin_change.java"
|
||||
[class]{coin_change}-[func]{coinChangeDPComp}
|
||||
```python title="coin_change.py"
|
||||
[class]{}-[func]{coin_change_dp_comp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -386,10 +386,16 @@ $$
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="coin_change.py"
|
||||
[class]{}-[func]{coin_change_dp_comp}
|
||||
```java title="coin_change.java"
|
||||
[class]{coin_change}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change.cs"
|
||||
[class]{coin_change}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -398,6 +404,12 @@ $$
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change.swift"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="coin_change.js"
|
||||
@ -410,30 +422,6 @@ $$
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change.c"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change.cs"
|
||||
[class]{coin_change}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change.swift"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change.zig"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="coin_change.dart"
|
||||
@ -446,6 +434,18 @@ $$
|
||||
[class]{}-[func]{coin_change_dp_comp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change.c"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change.zig"
|
||||
[class]{}-[func]{coinChangeDPComp}
|
||||
```
|
||||
|
||||
## 零钱兑换问题 II
|
||||
|
||||
!!! question
|
||||
@ -468,10 +468,10 @@ $$
|
||||
|
||||
### 代码实现
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="coin_change_ii.java"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDP}
|
||||
```python title="coin_change_ii.py"
|
||||
[class]{}-[func]{coin_change_ii_dp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -480,10 +480,16 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="coin_change_ii.py"
|
||||
[class]{}-[func]{coin_change_ii_dp}
|
||||
```java title="coin_change_ii.java"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change_ii.cs"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -492,6 +498,12 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change_ii.swift"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="coin_change_ii.js"
|
||||
@ -504,30 +516,6 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change_ii.c"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change_ii.cs"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change_ii.swift"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change_ii.zig"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="coin_change_ii.dart"
|
||||
@ -540,14 +528,26 @@ $$
|
||||
[class]{}-[func]{coin_change_ii_dp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change_ii.c"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change_ii.zig"
|
||||
[class]{}-[func]{coinChangeIIDP}
|
||||
```
|
||||
|
||||
### 空间优化
|
||||
|
||||
空间优化处理方式相同,删除硬币维度即可。
|
||||
|
||||
=== "Java"
|
||||
=== "Python"
|
||||
|
||||
```java title="coin_change_ii.java"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDPComp}
|
||||
```python title="coin_change_ii.py"
|
||||
[class]{}-[func]{coin_change_ii_dp_comp}
|
||||
```
|
||||
|
||||
=== "C++"
|
||||
@ -556,10 +556,16 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
=== "Java"
|
||||
|
||||
```python title="coin_change_ii.py"
|
||||
[class]{}-[func]{coin_change_ii_dp_comp}
|
||||
```java title="coin_change_ii.java"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change_ii.cs"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Go"
|
||||
@ -568,6 +574,12 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change_ii.swift"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "JS"
|
||||
|
||||
```javascript title="coin_change_ii.js"
|
||||
@ -580,30 +592,6 @@ $$
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change_ii.c"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "C#"
|
||||
|
||||
```csharp title="coin_change_ii.cs"
|
||||
[class]{coin_change_ii}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Swift"
|
||||
|
||||
```swift title="coin_change_ii.swift"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change_ii.zig"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Dart"
|
||||
|
||||
```dart title="coin_change_ii.dart"
|
||||
@ -615,3 +603,15 @@ $$
|
||||
```rust title="coin_change_ii.rs"
|
||||
[class]{}-[func]{coin_change_ii_dp_comp}
|
||||
```
|
||||
|
||||
=== "C"
|
||||
|
||||
```c title="coin_change_ii.c"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
|
||||
```zig title="coin_change_ii.zig"
|
||||
[class]{}-[func]{coinChangeIIDPComp}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user