Image Cover
Avatar

Viblo Algorithm

@algorithm

Report

Pinned Posts

Đây là bài viết số 2 thuộc series bài viết Tham chiếu, Địa chỉ và Con trỏ trong C++ của chuyên đề lập trình C++ cơ bản định hướng thi HSG Tin học.

Để hiểu rõ về bài viết này, các bạn hãy tìm đọc lại các bài viết trước đây trong series này:

  • Địa chỉ ảo, Tham chiếu và Con trỏ.

I. Con trỏ và mảng một chiều

Chúng ta biết rằng chức năng của con trỏ là để lưu trữ một địa chỉ của một vùng nhớ trê...

506
4
1 0

All posts

Thumbnail Image
24.5K
5
3 1
Avatar Viblo Algorithm Jun 10th, 2022 6:04 a.m.
5 min read

Bài 8: Sử dụng mảng làm tham số của hàm

I. Truyền mảng một chiều

Mảng cũng có thể được truyền vào hàm giống như một tham số để tính toán. Có 33 cách để truyền mảng vào hàm: Sử dụng tham số mảng có kích cỡ, sử dụng tham số mảng không có kích cỡ và sử dụng con trỏ. Trong bài học này chúng ta sẽ tập trung vào hai cách đầu tiên, còn cách thứ ba với C++ là không cần thiết nên sẽ không đề cập ở đây.

Cú pháp:

  • Truyền mảng có kích cỡ: ...
Thumbnail Image
21.0K
4
1 0
Avatar Viblo Algorithm Jun 8th, 2022 6:15 a.m.
5 min read

Bài 7: Mảng hai chiều

I. Mảng hai chiều trong C++

  1. Khai báo và truy xuất

Ngoài kiểu dữ liệu mảng một chiều, C++ hỗ trợ kiểu dữ liệu mảng từ hai chiều tới nhiều chiều. Mảng hai chiều là ví dụ rất trực quan và dễ tưởng tượng, ta có thể xem nó như một bảng hình chữ nhật gồm có hàng và cột. Cú pháp khai báo rất đơn giản:

Khi đó, tổng số phần tử của mảng sẽ là {Sốhàng} {Sốcột}. Chẳng hạn, khai báo một mảng hai ...

Thumbnail Image
53.5K
7
9 2
Avatar Viblo Algorithm Jun 1st, 2022 7:31 a.m.
13 min read

Bài 6: Mảng một chiều

I. Khái niệm về mảng

Trong lập trình, đôi khi ta gặp tập dữ liệu gồm rất nhiều đối tượng có kiểu giống nhau. Lấy ví dụ:

  • Danh sách điểm tổng kết của các học sinh trong lớp (một danh sách các số thực).
  • Danh sách tên của một phòng thi (một danh sách các chuỗi kí tự).

Mọi ngôn ngữ lập trình đều cung cấp những kiểu dữ liệu có cấu trúc để lưu trữ các dạng dữ liệu như mô tả bên trên. Đối với C++...

Thumbnail Image
15.4K
2
2 0
Avatar Viblo Algorithm May 30th, 2022 6:26 a.m.
20 min read

Bài 5: Hàm trong C++

I. Phân chia chương trình thành từng hàm

  1. Kĩ thuật lập trình hướng cấu trúc

Cùng xem xét một ví dụ sau: Cho ba số nguyên dương đều không nhỏ hơn 2,2, hãy kiếm tra xem những số nào là số nguyên tố và đưa ra thông báo số đó là số nguyên tố?

Ta biết rằng một số nguyên tố sẽ không chia hết cho số nào ngoài 11 và chính nó. Áp dụng những gì đã học từ các bài trước, ta có thể xây dựng một chươn...

Thumbnail Image
8.8K
3
1 0
Avatar Viblo Algorithm May 27th, 2022 7:38 a.m.
11 min read

Bài 4: Cấu trúc lặp

I. Lặp với số lần biết trước và lặp với số lần không biết trước

Cùng xem xét hai bài toán sau đây:

  • Bài toán 1S,1S, biết:

  • Bài toán 2S,2S, biết:

cho tới khi .

Đối với bài toán 1,S1,S có thể được tính bằng cách sau:

  • Đầu tiên, được gán giá trị 1 (11)1 \ (\frac{1}{1}).
  • Tiếp theo, cộng vào tổng S một giá trị với . Việc cộng này được lặp lại lần tới khi thì thu được tổng ban đầu.

Đối với b...

Thumbnail Image
17.1K
8
4 0
Avatar Viblo Algorithm May 25th, 2022 7:37 a.m.
17 min read

Bài 3: Cấu trúc rẽ nhánh

I. Biểu thức logic trong C++

  1. Kiểu dữ liệu bool

Trong mọi ngôn ngữ lập trình đều tồn tại hai trạng thái đúng - sai, tương đương với hai giá trị 1010. Để biểu diễn hai trạng thái này, trong C++ sử dụng kiểu dữ liệu nguyên thủy bool. Để khai báo các biến kiểu bool, ta sử dụng cú pháp:

Các biến kiểu bool còn được gọi là các biến logic, chúng chỉ được phép nhận hai giá trị là true hoặc false. ...

Thumbnail Image
7.9K
8
3 0
Avatar Viblo Algorithm May 23rd, 2022 6:12 a.m.
18 min read

Bài 2: Kiểu dữ liệu và sử dụng hằng - biến trong C++

I. Kiểu dữ liệu

  1. Kiểu dữ liệu nguyên thủy (Primitive Type)

Các bài toán trong thực tế thường sẽ có dữ liệu đầu vào và kết quả ra thuộc những kiểu dữ liệu quen thuộc như số nguyên, số thực,...Việc sử dụng các kiểu dữ liệu có liên quan mật thiết đến các phép toán có thể thao tác trên dữ liệu và bộ nhớ cấp phát cho dữ liệu đó. Mỗi ngôn ngữ lập trình sẽ cung cấp cho người dùng một số kiểu dữ li...

Thumbnail Image
13.5K
8
8 2
Avatar Viblo Algorithm May 18th, 2022 6:41 a.m.
36 min read

Bài 1: Giới thiệu Lập trình thi đấu và ngôn ngữ lập trình C++

I. Tổng quan về chương trình khối chuyên Tin

  1. Mục tiêu đào tạo

Chương trình chuyên Tin học và đào tạo thi HSG Tin học hướng tới các mục tiêu sau:

  • Giúp học sinh hiểu rõ môn Tin học trong khối chuyên là gì, và làm thế nào để có phương pháp học tập tốt môn học. Tránh nhầm lẫn việc học trong lớp chuyên Tin là học Toán, là "lớp dễ hơn của chuyên Toán".
  • Trang bị cho học sinh các kiến thức về...
Thumbnail Image
937
6
5 0
Avatar Viblo Algorithm Apr 25th, 2022 8:19 a.m.
20 min read

Tản mạn về các thuật toán Sorting

Thống kê các thuật toán Sorting

Chúng ta đã xem xét nhiều thuật toán sắp xếp, cơ mà bạn có bao giờ tự hỏi mình nên sử dụng thuật toán sắp xếp nào không 😃. Việc biết thuật toán nào là tốt nhất có thể phụ thuộc nhiều vào chi tiết của ứng dụng và cách triển khai. Trong bài viết này mình sẽ tổng kết các thông tin của các thuật toán sắp xếp giúp cho bạn có cái nhìn tổng quan về các thuật toán này....

Thumbnail Image
351
2
2 0
Avatar Viblo Algorithm Apr 15th, 2022 7:13 a.m.
7 min read

Một số vấn đề về tính đầy đủ NP (phần 1)

Giới thiệu

Trong các bài viết trước về những thuật toán phổ thông, ta đã nghiên cứu và ứng dụng vào những vấn đề cụ thể. Những thuật toán này đều có những kĩ thuật xử lý của riêng chúng. Sẽ thật tuyệt với nều như nếu tất cả các vấn đề đều được giải quyết bằng các thuật toán hiệu quả sao cho các thuật toán này được thiết kế bởi một tập nhỏ các kĩ thuật. Nhưng không phức tạp thì không phải cuộc ...

Thumbnail Image
2.0K
3
1 1
Avatar Viblo Algorithm Apr 6th, 2022 7:05 a.m.
9 min read

Mở đầu về các bài toán đầy đủ NP

Giới thiệu

Tất cả các thuât toán phổ thông trong chương trình cấp 3 và trong môn Cấu trúc dữ liệu và giải thuật tại Đại học mà chúng ta tìm hiểu đều là các thuật toán thời gian đa thức. Đó là từ đầu vào có kích thước , thời gian thực hiện thuật toán trong trường hợp xấu nhất là với một hằng . Một câu hỏi rất tự nhiên đặt ra là: Tất cả các bài toán có thể giải theo thời gian đa thức không? Câu...

Thumbnail Image
476
2
1 0
Avatar Viblo Algorithm Mar 30th, 2022 7:58 a.m.
7 min read

Zero-sum games với hữu hạn hai người (phần 1)

Giới thiệu

Bài viết này đề cập đến các trò chơi hai người chơi, trong đó mỗi người chơi chọn từ rất nhiều chiến lược thuần túy hoặc ngẫu nhiên trong số các chiến lược và tổng phần thưởng của những người chơi luôn bằng 0.

Định nghĩa và định lý cơ bản

Vì tất cả dữ liệu của một trò chơi có tổng bằng 0 hữu hạn hai người có thể được tóm tắt trong một ma trận, những trò chơi như vậy được gọi là ma...

Thumbnail Image
6.4K
3
2 3
Avatar Viblo Algorithm Mar 14th, 2022 9:05 a.m.
9 min read

Thuật toán Manacher - Tìm tất cả xâu con palindrome với độ phức tạp O(N)

Mô tả vấn đề

Cho một xâu có độ dài . Tìm tất cả các cặp sao cho xâu con là một palindrome. Xâu là một palindrome khi và chỉ khi ( là xâu đảo ngược của xâu ban đầu).

Trong trường hợp xấu nhất, xâu có thể có tối đa xâu con palindromic. Khi mới đầu quan sát, ta thấy có vẻ như không có thuật toán với độ phức tạp tuyến tính nào giải quyết vấn đề này.

Tuy nhiên thông tin về các palindromes c...

Thumbnail Image
3.0K
9
0 0
Avatar Viblo Algorithm Mar 11th, 2022 6:32 a.m.
16 min read

Deque và Tìm min - max trên đoạn tịnh tiến

I. Cấu trúc dữ liệu deque - Hàng đợi hai đầu

  1. Giới thiệu chung

Khi học lập trình C++, có lẽ chúng ta đều đã biết đến hai container stack và queue - hai cấu trúc dữ liệu ngăn xếp và hàng đợi được xây dựng sẵn trong thư viện STL C++. Nếu tưởng tượng cả hàng đợi và ngăn xếp được biểu diễn bằng mảng, thì hàng đợi sẽ hỗ trợ chúng ta lấy phần ...

Thumbnail Image
25.3K
5
2 0
Avatar Viblo Algorithm Feb 23rd, 2022 7:34 a.m.
7 min read

Đồ thị Hamilton và chu trình Hamilton

I. Tổng quan

Khái niệm về đường đi và chu trình Hamilton được đưa ra bởi William Rowan Hamilton vào năm 1856,20301251856,2030125 đỉnh cho trước (còn gọi là trò chơi Icosian).

Bài toán tổng quát được Hamilton đưa ra là: Tìm một chu trình đơn đi qua tất cả các đỉnh trên đồ thị, mỗi đỉnh đúng một lần sau đó quay trở về điểm xuất phát. Cho đến nay, bài toán này...

Thumbnail Image
6.4K
8
1 0
Avatar Viblo Algorithm Feb 18th, 2022 7:00 a.m.
12 min read

Vấn đề về Chu trình trên đồ thị

I. Xác định chu trình trên đồ thị

Từ những bài viết đầu tiên về chuyên đề Lý thuyết đồ thị, tôi đã giới thiệu tới các bạn khái niệm về Chu trình trên đồ thị. Một đường đi trên đồ thị được gọi là một chu trình nếu như và nếu như các cạnh trên đường đi đó đều phân biệt. Ngoài ra, trên đồ thị còn có thể tồn tại hai dạng chu trình đặc biệ...

Thumbnail Image
35.7K
5
6 1
Avatar Viblo Algorithm Feb 14th, 2022 7:21 a.m.
10 min read

Đồ thị Euler và Chu trình Euler

I. Tổng quan

Những lý thuyết cơ bản của lý thuyết đồ thị chỉ mới được đề xuất từ thế kỷ XVIII, bắt đầu từ một bài báo của Leonhard Euler về bài toán 77 cây cầu ở Königsberg - một bài toán cực kỳ nổi tiếng:

Thành phố Königsberg thuộc Đức (nay là Kaliningrad thuộc CHLB Nga) được chia làm 41736,714741736,7147 chiếc cầu, mỗi chiếc đúng một lần rồi lạ...

Thumbnail Image
20.8K
6
2 0
Avatar Viblo Algorithm Feb 9th, 2022 9:28 a.m.
12 min read

Các giải thuật tìm kiếm trên đồ thị

I. Đặt vấn đề

Một vấn đề rất quan trọng trong Lý thuyết đồ thị là bài toán duyệt tất cả các đỉnh có thể đến được từ một đỉnh xuất phát nào đó, không duyệt lặp lại cũng như không bỏ sót đỉnh nào cả. Vì vậy, ta phải xây dựng được những phép duyệt các đỉnh của đồ thị theo một hệ thống nhất định, những phép duyệt đó gọi là các thuật toán tìm kiếm trên đồ thị.

Có hai giải thuật tìm kiếm trên đồ th...

Thumbnail Image
9.1K
5
1 1
Avatar Viblo Algorithm Feb 7th, 2022 7:41 a.m.
5 min read

Biểu diễn đồ thị trên máy tính

I. Ma trận kề (Adjacency Matrix)

Giả sử là một đa đồ thị có số đỉnh là . Coi rằng các đỉnh được đánh số từ 1NadjN×N1NadjN\times N, trong đó:

  • nếu .
  • nếu và là số lượng cạnh nối giữa và .
  • Đối với với , có thể đặt giá trị tùy theo mục đích, thông thường nên đặt bằng 00.

Cài đặt: Việc cài đặt cạnh sẽ thay đổi tùy vào đồ thị là có hướng hay vô hướng. Dưới đây sẽ trình bày cài đặt cho đồ thị...

Thumbnail Image
9.1K
6
0 0
Avatar Viblo Algorithm Jan 24th, 2022 7:16 a.m.
7 min read

Giới thiệu về Lý thuyết đồ thị

I. Khái niệm về đồ thị

  1. Sơ lược về Lý thuyết đồ thị

Trong Toán học và Tin học, Lý thuyết đồ thị tập trung nghiên cứu về một đối tượng cơ bản là đồ thị - một đối tượng có tính ứng dụng rất cao trong thực tế. Mô hình đồ thị xuất hiện xung quanh ta, trong nhiều lĩnh vực của cuộc sống, như giao thông, cấu trúc website,...

Mô hình bài toán 7 cây cầu ở Königsberg

Người đặt nền móng cho sự phát ...

Viblo
Let's register a Viblo Account to get more interesting posts.