Abderrahmane Faiz 2 هفته پیش
والد
کامیت
c5d73d3f7c
2فایلهای تغییر یافته به همراه58 افزوده شده و 1 حذف شده
  1. 57 0
      3/solve_2.go
  2. 1 1
      README.md

+ 57 - 0
3/solve_2.go

@@ -0,0 +1,57 @@
+package main
+
+import (
+	"bufio"
+	"fmt"
+	"os"
+	"strconv"
+)
+
+
+func main() {
+	fmt.Println("Advent of Code 2025 - Day 3 - Part 2")
+	f,_:= os.Open("3/input")
+	defer f.Close()
+	scanner := bufio.NewScanner(f)
+	var res int64;
+	var store_comput [100][13]int64
+	for scanner.Scan(){
+		bank := scanner.Text()
+		init_store_comput(&store_comput)
+		max_volt := max_voltage2(bank, 0, 12, &store_comput)
+		res += max_volt
+	}
+	fmt.Println(res)
+}
+
+func init_store_comput(store_comput *[100][13]int64){
+	for i:= 0; i < 100; i++{
+		for j:=0; j < 13; j++{
+			store_comput[i][j] = -1
+		}
+	}
+}
+
+var pre = [12]int64{
+	1, 10, 100,
+	1_000, 10_000, 100_000,
+	1_000_000, 10_000_000, 100_000_000,
+	1_000_000_000, 10_000_000_000, 100_000_000_000}
+
+func max_voltage2(bank string, i,k int, store_comput *[100][13]int64) int64{
+	if (k == 0) {return 0}
+	if (i == len(bank)) {return -999999999999999}
+
+	if (store_comput[i][k] != -1){
+		return store_comput[i][k]
+	}
+	
+	max1 := max_voltage2(bank, i+1, k, store_comput)
+
+	curr,_ := strconv.Atoi(string(bank[i]))
+	max2 := max_voltage2(bank,i+1,k-1,store_comput) + (int64(curr) * pre[k-1])
+
+	store_comput[i][k] = max(max1,max2)
+	return store_comput[i][k]
+	
+}

+ 1 - 1
README.md

@@ -22,7 +22,7 @@ Each day's folder is named after the day number (`1` to `12`). Inside each folde
 |-----|--------|--------|
 | 1   | ✅     | ✅     |
 | 2   | ✅     | ✅     |
-| 3   | ✅     |      |
+| 3   | ✅     |      |
 | 4   | ⬜     | ⬜     |
 | 5   | ⬜     | ⬜     |
 | 6   | ⬜     | ⬜     |