ความรู้พื้นฐาน

Programming

กระบวนการออกแบบและพัฒนาโปรแกรมเพื่อให้ได้ผลลัพธ์ตามวัตถุประสงค์ที่ต้องการ

เทคนิค

  1. พิมพ์คำสั่งให้เร็วขึ้น

  2. บอกประเภทปัญหาอย่างไว

  3. วิเคราะห์ algorithms ที่จะใช้ให้ได้

  4. เขียนคำสั่งให้เชี่ยว

  5. ทดสอบให้เซียน

  6. ฝึก ฝึก ฝึกทำโจทย์

ความซับซ้อน

ตารางต่อไปนี้เปรียบเทียบขนาดข้อมูลและ algorithms ที่จะสามารถใช้ในการเขียนคำสั่งเพื่อให้ได้คะแนน

\(n\)

Big \(O\)

\(\le 10\)

\(O(n!),O(n^6)\)

\(\le 15\)

\(O(2^n \times n^2)\)

\(\le 18\)

\(O(2^n \times n)\)

\(\le 100\)

\(O(n^4)\)

\(\le 400\)

\(O(n^3)\)

\(\le 2K\)

\(O(n^2 log_2 n)\)

\(\le 10K\)

\(O(n^2)\)

\(\le 1M\)

\(O(n log_2 n)\)

\(\le 100M\)

\(O(n), O(log_2 n), O(1)\)

เทคนิคการแก้ปัญหา

ระดับ

Algorithms

1

ไม่ใช้เทคนิคอะไร

2

Brute-force Search

3

Divide and Conquer

4

Greedy

5

Dynamic Programming

6

Graph

7

Mathematics

8

String

9

Geometry

โจทย์ฝึกหัด

โจทย์ระดับ 1

  • UVa00272

  • UVa01124

  • UVa10550

  • UVa11044

  • UVa11172

  • UVa11361

  • UVa11498

  • UVa11547

  • UVa11727

  • UVa12250

  • UVa12279

  • UVa12289

  • UVa12372

  • UVa12403

  • UVa12577

โจทย์ระดับ 2

  • UVa00621

  • UVa10114

  • UVa10300

  • UVa10963

  • UVa11332

  • UVa11559

  • UVa11679

  • UVa11764

  • UVa11799

  • UVa11942

  • UVa12015

  • UVa12157

  • UVa12468

  • UVa12503

  • UVa12554

โจทย์ระดับ 3

  • UVa00119

  • UVa00573

  • UVa00661

  • UVa10141

  • UVa10324

  • UVa10424

  • UVa10919

  • UVa11507

  • UVa11586

  • UVa11661

  • UVa11683

  • UVa11687

  • UVa11956

  • UVa12478