Hướng dẫn viết thuật toán giải quyết các vấn đề trong lập trình – CodeGym

Cùng xem Hướng dẫn viết thuật toán giải quyết các vấn đề trong lập trình – CodeGym trên youtube.

Cách viết thuật toán

Nếu bạn mới học lập trình, có thể bạn đã quen thuộc với một thứ gọi là “thuật toán”. Với kinh nghiệm là người đi trước trong việc giải quyết nhiều vấn đề thuật toán trong phạm vi hacker, tôi có đôi dòng chia sẻ về cách giải quyết những vấn đề đó cho người mới về lĩnh vực này.

trước tiên, một chút về những gì chúng ta đang nói:

thuật toán là gì?

thuật toán , còn được gọi là thuật toán , là một tập hợp hữu hạn hoặc chuỗi các quy tắc hướng dẫn, phương pháp hoặc thủ tục nghiêm ngặt. chuỗi các hoạt động trên một đối tượng nhất định và được xác định rõ ràng để thực hiện một số hành động từ trạng thái ban đầu nhất định; khi các chỉ thị này được áp dụng đầy đủ, chúng sẽ dẫn đến kết quả cuối cùng như mong đợi.

Nói cách khác, thuật toán là một tập hợp các quy tắc hoặc thủ tục cụ thể để giải quyết một vấn đề trong một số bước hữu hạn hoặc cung cấp kết quả từ một tập dữ liệu. (theo wikipedia)

Tại sao chúng ta học thuật toán?

hmm … điều đầu tiên cần nghĩ đến là tư duy giải quyết vấn đề , thứ mà một lập trình viên nên có (nếu bạn không làm thì cũng tốt, nhưng rất cần thiết nếu bạn có). Tôi muốn tiếp tục với điều đó). đừng đánh giá thấp hoặc đánh giá quá thấp việc bạn có giỏi thuật toán hay không. bạn không cần các thuật toán để làm việc trên nó, nhưng có những lĩnh vực đòi hỏi khắt khe, thậm chí rất khắt khe mà bạn có thể sử dụng tốt các thuật toán, chẳng hạn như: học máy, khai thác dữ liệu, mã hóa dữ liệu … giỏi thuật toán cũng giúp chúng ta có tư duy giải quyết vấn đề tốt, tìm giải pháp nhanh hơn, tìm giải pháp tối ưu hơn cho bộ nhớ và hiệu suất chương trình, …

sau đó rời khỏi phỏng vấn , đúng vậy, rời khỏi phỏng vấn và tìm một công ty, một công việc phù hợp. Hiện nay, có khá nhiều công ty thuê lập trình viên với các bài kiểm tra thuật toán. họ kiểm tra chúng tôi về kỹ năng giải quyết vấn đề, khả năng trình bày ý tưởng và kiến ​​thức của chúng tôi về các thuật toán cơ bản để đánh giá mức độ phù hợp của chúng tôi với công việc. Và ngay cả khi họ không đánh giá chúng tôi bằng thuật toán, biết đó là một điểm cộng.

được rồi, đó là bước giới thiệu. đây là những việc chúng ta phải làm khi giải bài toán bằng thuật toán, cùng với những kinh nghiệm giải bài toán đó mà chúng ta có được trong quá trình luyện tập.

7 bước để giải quyết vấn đề

chú ý đến thông tin

hãy thực sự chú ý đến vấn đề đã cho. mỗi bài toán luôn cung cấp cho chúng ta những thông tin cần thiết để có thể giải nó, một vài trong số chúng (có thể là) cho chúng ta phương hướng để có một thuật toán tối ưu nhất có thể. vì vậy hãy đảm bảo rằng bạn không bỏ sót bất kỳ chi tiết quan trọng nào được cung cấp, nếu cần, hãy xem lại chúng. đặc biệt chú ý đến các hạn chế xuất nhập cảnh vì chúng cũng rất quan trọng. Có thể có cùng một vấn đề, nhưng với các ràng buộc đầu vào khác nhau, nó sẽ mang lại các giải pháp khác nhau cho vấn đề đó. loại dữ liệu hoặc phạm vi của biến thường cũng khiến chương trình của chúng tôi gặp sự cố hoặc không đạt được những gì chúng tôi muốn.

Xem Thêm : Phương pháp giải Các dạng bài tập chương Nhóm Oxi, Lưu huỳnh có đáp án | Hóa học lớp 10

Ví dụ: một vấn đề đơn giản như tìm tổng, hiệu, tích và thương của hai số. vấn đề có thể được giải quyết một cách đơn giản bằng cách trả về các phép cộng, trừ, nhân và chia. chỉ có 2 số. nhưng nếu đầu vào là 2 số siêu siêu lớn mà chúng tôi không thể sử dụng các biến để lưu trữ dưới dạng số (trong ngôn ngữ lập trình của bạn), thì sao? hoặc sai, kết quả của bạn vượt quá giới hạn cho phép?

không có thông tin thừa, chúng không phải là câu đố, gian lận trong các kỳ thi bạn đã thực hiện, được cung cấp bởi hệ thống giáo dục chuối của chúng tôi, hãy tin tưởng vào chúng. và nếu bạn giải quyết vấn đề mà không sử dụng bất kỳ dữ liệu nào, có thể đó là chìa khóa để tối ưu hóa thuật toán của bạn.

ví dụ với sự cố: cho 2 mảng có thứ tự và các phần tử duy nhất. tìm phần tử chung cho cả hai mảng? chắc chắn chúng ta có thể giải quyết nó cho dù chúng có được sắp xếp theo thứ tự hay không (các phần tử duy nhất là) bằng cách sử dụng 2 vòng lặp và so sánh lần lượt các phần tử của 2 mảng. nhưng dữ liệu “mảng có thứ tự” rất quan trọng để tối ưu hóa thuật toán của chúng tôi.

<3

đưa ra ví dụ

các ví dụ thường là cách nhanh nhất để tiếp cận một vấn đề, cung cấp cho bạn các thuật toán khả thi cho vấn đề bạn gặp phải. Có hai điều cần ghi nhớ khi tạo các ví dụ điển hình cho các vấn đề: nó phải lớn không đặc biệt . đừng đưa ra những ví dụ quá nhỏ vì chúng không thể hiện được trọng tâm của vấn đề. không phải là nó không nên, nhưng nó không nên. và vì ví dụ của chúng ta phải tổng quát nhất để chúng ta đi vào cốt lõi của vấn đề, chúng ta phải hạn chế các ví dụ có chứa các trường hợp đặc biệt của vấn đề. vì ví dụ chỉ chứa một trường hợp thành công nên ví dụ đã cho chỉ chứa các trường hợp ngoại lệ,….

trốn thoát

Nếu bạn không có giải pháp khả thi cho vấn đề của mình hoặc ý tưởng bạn nảy ra khá tệ, chạy chậm, tiêu tốn tài nguyên, v.v., hãy sử dụng thuật toán toàn diện. thuật toán toàn diện là một thuật toán sẽ liệt kê tất cả các trường hợp có thể xảy ra (cho dù chúng có khớp hay không).

thường sẽ vẫn làm cho chương trình chạy rất chậm, nhưng “sự biến dạng còn hơn không” ít nhất sẽ giúp bạn xử lý các đầu vào nhỏ một cách chính xác. và từ đó, bạn sẽ làm theo hướng đã vạch ra để có thể tiếp cận một giải pháp tốt hơn và minh bạch hơn. nếu bạn mới bắt đầu, bạn có thể viết mã nó, nhưng khi bạn đã quen thuộc với các bước tôi đã trình bày, bước này nên ở mức vẽ trên giấy hoặc suy nghĩ trong đầu để bạn có thể tối ưu hóa cũng như đưa ra giải pháp cho vấn đề chứ không phải viết mã ngay lập tức.

tối ưu

Đây thường là bước mà bạn sẽ dành nhiều thời gian nhất trong quá trình “giải toán” của mình. hãy nhớ luôn quay lại bước này khi bạn đã lập trình xong và nếu bạn nghiêm túc luyện tập. Nó giúp bạn có thói quen tối ưu hóa mã của mình, điều này rất quan trọng và cần thiết cho sự nghiệp lập trình viên sau này của bạn. nghĩ xem, nó còn giúp bạn tối ưu hóa ý tưởng của mình để khi gặp lại những dạng bài viết này, bạn “xử lý” chúng một cách trật tự và nhanh chóng nhất. thời gian bạn dành để tối ưu hóa mã và thuật toán của mình sẽ được đền đáp trong tương lai. Tất nhiên, đừng mải mê quên đi những yếu tố quan trọng khác, hãy từ bỏ đúng lúc và tìm kiếm sự trợ giúp nếu mất quá nhiều thời gian.

kiểm tra lại thuật toán

biết chính xác những gì bạn muốn làm với mã của mình. Đừng bỏ qua bước này và nhảy ngay vào mã chỉ để kết thúc với một đống mã lộn xộn, rác rưởi, có mùi sẽ sập bẫy bạn. Hãy nhớ rằng, bạn phải tạo ra những thói quen nhỏ từng bước để bạn có thể hình thành những thói quen lớn trong tương lai. lúc đầu sẽ mất thời gian, nhưng sau đó nó sẽ trở thành bản năng như hơi thở của bạn, đừng cố làm mà tự nó sẽ làm được. vui lòng ghi rõ:

  • tôi sử dụng biến nào (lưu ý tên, rất quan trọng), cấu trúc dữ liệu nào?
  • chúng thay đổi như thế nào và khi nào (rất hữu ích cho người dùng) mới để có thể nắm bắt được của chương trình)?
  • cấu trúc của mã bạn muốn trình bày là gì? ví dụ: tôi sẽ tạo những hàm và phương thức nào? các vòng lặp như thế nào? sử dụng vòng lặp nào?…

Xem Thêm : Vinahouse là gì? Vinahey là nhạc gì? Cách nhảy nhạc chuẩn nhất hiện nay

Hãy nhớ tìm hiểu thêm về các yếu tố như độ phức tạp của thuật toán, phạm vi biến, bộ nhớ, v.v., những yếu tố này có thể có tác động lớn đến chương trình của bạn. và nếu bạn muốn có thể tối ưu hóa tốt các thuật toán và dòng mã của mình, thì kiến ​​thức này là rất cần thiết.

Khi bạn đã thực hiện xong các bước chuẩn bị, bạn còn chần chừ gì nữa? không bắt đầu lập trình và tận hưởng kết quả. nhưng bạn cần chú ý đến quy ước mã hóa. ban đầu bạn có thể không biết gì về nó, nhưng hãy dành thời gian tìm hiểu nó và sử dụng nó ngay lập tức. đừng nghĩ về những thứ bạn vừa mới tiếp xúc, có thể là sau này. Đừng làm! hãy dành thời gian tìm hiểu về nó và áp dụng ngay sẽ giúp bạn tiết kiệm được công sức về sau. và tại sao nó lại quan trọng? dành thời gian tìm hiểu, bài viết dài quá nên mình không muốn đi chi tiết về chủ đề này. nhưng tin tôi đi, không ai đánh giá cao một người biết và sử dụng tốt các quy ước mã hóa. đó là tất cả những lập trình viên đáng yêu nhất và được yêu thích nhất trên trái đất. Ngoài ra, nếu bạn tham gia một cuộc phỏng vấn, bạn sẽ có một điểm cộng tuyệt vời.

kiểm tra

và khi bạn đã viết xong, tất nhiên bạn phải thử với các trường hợp thử nghiệm để xem liệu chương trình của bạn có tốt và đáp ứng các yêu cầu hay không. tại thời điểm này, các ví dụ bạn đưa ra trong bước 2 sẽ trở nên quá đơn giản và tầm thường, nhường chỗ cho các trường hợp thử nghiệm làm cạn kiệt tất cả các trường hợp và ngoại lệ có thể xảy ra trong vấn đề. nếu bạn đang đào tạo trên các trang web thuật toán, sẽ có một hệ thống kiểm tra dành cho bạn.

nếu xảy ra sự cố hoặc nếu có sự cố, hãy lưu ý về bất kỳ cú pháp và lỗi chính tả nào bạn có thể mắc phải trong chương trình của mình, xem từng dòng và sử dụng gỡ lỗi gỡ lỗi nếu cần để sự cố có thể được giải quyết ở đó. nếu đó chỉ là những lỗi cơ bản như lỗi cú pháp, hệ thống gỡ lỗi sẽ giúp bạn tìm ra những lỗi đơn giản. nhưng nếu nó là một lỗi xảy ra trong quá trình thực hiện chương trình, “của tôi”. cách sử dụng thì các bạn có thể tham khảo thêm trên mạng, mình sẽ không nói nhiều ở đây.

Nếu nó không thành công một số thử nghiệm hoặc thậm chí không thành công tất cả chúng, hãy kiểm tra lại với các trường hợp thử nghiệm nhỏ để xem vấn đề nằm ở đâu. phân tích cách chương trình của bạn chạy, xem từng dòng mã, bạn sẽ sớm tìm ra vấn đề ở đâu đó. đi từ các trường hợp thử nghiệm nhỏ đến các trường hợp thử nghiệm lớn, sau đó là các trường hợp thử nghiệm chứa các trường hợp đặc biệt. hãy phân tích và suy nghĩ thật kỹ để có thể giải quyết và giải quyết những tồn đọng trong chương trình của bạn.

hãy nhớ, hãy thực sự tập trung vào các trường hợp thử nghiệm. và bằng cách thử nghiệm, bạn đang thử nghiệm chương trình, không phải thuật toán bạn có. nếu chương trình không có vấn đề gì, hãy nghĩ về thuật toán. nếu lỗi thực sự nằm ở thuật toán sai, hãy nghĩ ra thuật toán khác, địa chỉ mới, đừng “cố đấm ăn xôi”.

một lưu ý nhỏ cuối cùng là bạn nên sửa lỗi bằng cả trái tim của mình. không đối phó với cách bạn xem các bài kiểm tra là đúng và sau đó trở lại đúng trong chương trình của bạn hoặc một cái gì đó. nó cho thấy bạn đang quá hời hợt với những nỗ lực của mình, hoặc bạn chưa hiểu rõ vấn đề. hãy suy nghĩ kỹ về vấn đề gây ra lỗi, đừng cố gắng sửa chữa để thỏa mãn 1 hoặc 2 trường hợp, vì nó có thể bị lỗi trong các trường hợp khác. hãy luôn giữ đầu óc tỉnh táo và suy nghĩ một cách toàn diện nhất, tập trung vào vấn đề mình đang hướng tới, đừng “bắt con săn sắt bỏ con cá rô”.

Nếu bạn gặp vấn đề và cảm thấy nó mất quá nhiều thời gian, hãy kiên nhẫn và nhớ rằng khi bạn đã quen với nó, bạn sẽ giải quyết nó nhanh hơn vào lần sau. Tất nhiên, nếu điều đó khiến bạn bực bội và bạn thực sự dành nhiều thời gian cho nó, hãy để nó ở đó và quay lại khi bạn đã sẵn sàng. đừng bỏ cuộc.

Nữ thần may mắn sẽ luôn phù hộ cho những ai cố gắng.

Nguồn: https://dongnaiart.edu.vn
Danh mục: Tổng hợp

Lời kết: Trên đây là bài viết Hướng dẫn viết thuật toán giải quyết các vấn đề trong lập trình – CodeGym. Hy vọng với bài viết này bạn có thể giúp ích cho bạn trong cuộc sống, hãy cùng đọc và theo dõi những bài viết hay của chúng tôi hàng ngày trên website: Dongnaiart.edu.vn

Related Posts

Tìm hiểu nhà cái uy tín- Điểm cá cược uy tín hàng đầu châu Á

Tìm hiểu nhà cái uy tín- Điểm cá cược uy tín hàng đầu châu Á

Đôi nét về nhà cái uy tín Nhacaivip.vip là một nhà cái cá cược trực tuyến được biết đến rộng rãi và có tiếng tăm trong ngành…

Hướng dẫn rút tiền tài khoản 8day nhanh nhất

Hướng dẫn rút tiền tài khoản 8day nhanh nhất

Hướng dẫn đăng nhập tài khoản 8day  Để đăng nhập vào tài khoản 8day, bạn có thể làm theo các bước sau:Có thể bạn quan tâm Would…

Kubet – Trang cá cược hàng đầu Châu Á

Kubet – Trang cá cược hàng đầu Châu Á

Kubet, trước đây được biết đến với cái tên Thiên Hạ Bet, là một trong những nhà cái hàng đầu Châu Á trong lĩnh vực cá cược…

Nổ hũ là gì? Luật chơi nổ hũ cơ bản cho người mới

Nổ hũ là gì? Luật chơi nổ hũ cơ bản cho người mới

Nổ hũ là gì? Nổ hũ Mb66 là một thuật ngữ được sử dụng trong lĩnh vực cá cược và trò chơi trực tuyến Mb66. Đây là…

Hướng dẫn cách tham gia cá cược đá gà online từ A đến Z

Hướng dẫn cách tham gia cá cược đá gà online từ A đến Z

Đá gà trực tuyến đang dần trở thành một hình thức giải trí thu hút đông đảo người tham gia bởi tính tiện lợi và hấp dẫn….

Dàn đề 3 càng là gì? Trúng dàn đề 3 càng ăn bao nhiêu tiền?

Dàn đề 3 càng là gì? Trúng dàn đề 3 càng ăn bao nhiêu tiền?

Dàn đề 3 càng là gì? Dàn đề 3 càng là một hình thức cá cược phổ biến trong các trò đánh lô đề số tại nhà…