Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรม C++ อัลกอริทึม Finite Automata สำหรับ Pattern Searching

    ใช้ Finite Automata Algorithm ค้นหา Pattern ใน Text ได้รับ text[0..n-1] และ pattern[0..m-1] หาตำแหน่งทั้งหมดที่ pattern ปรากฏใน text วิธี: Preprocess pattern สร้างตาราง 2D (Transition Function) แล้วสแกน text ตาม state machine ตัวอย่างโค้ด #include<stdio.h> #include<string.h> #define tot

  2. โปรแกรม C++ หาค่า k ที่ mod กับทุกสมาชิกอาร์เรย์ได้เหลือเท่ากัน

    หาจำนวนเต็ม k ที่ modulus กับทุกสมาชิกในอาร์เรย์ได้เศษเหมือนกัน ตัวอย่าง: arr = {12, 22, 32} → k = 1, 2, 5, 10 y และ (y+d)%k = y%k → d%k = 0 ดังนั้น k ต้องเป็นตัวหารของความต่างระหว่างค่าสูงสุดและต่ำสุด ตรวจสอบตัวหารทุกตัวว่าให้เศษเท่ากันทุกสมาชิกหรือไม่ ตัวอย่างโค้ด #include<bits/stdc++.h> u

  3. โปรแกรม C++ หารถแท็กซี่ใกล้ๆ ด้วยสูตร Great Circle Distance

    หารถแท็กซี่ที่อยู่ในรัศมี 50 กม. จากผู้ใช้ โดยใช้สูตร Great Circle Distance รับไฟล์ JSON ที่มีพิกัดผู้ใช้และรถแท็กซี่ แปลง GPS coordinates เป็น double แล้วแปลงเป็น radian นำไปใช้ในสูตร Great Circle Distance เนื่องจากข้อมูลมาก ใช้ไฟล์ JSON เป็น input และ output ตัวอย่างโค้ด (โครงสร้างหลัก) #include

  4. โปรแกรม C++ หาจุดชนแรกของอนุกรมเลขคณิตสองอนุกรม

    หาจุดชน (collision point) แรกของอนุกรมเลขคณิตสองอนุกรม ได้รับ a,b,c,d,n สร้างอนุกรม 2 อนุกรม: อนุกรมที่ 1: b, b+a, b+2a, ..., b+(n-1)a อนุกรมที่ 2: d, d+c, d+2c, ..., d+(n-1)c สร้างตัวเลขอนุกรมแรก ตรวจสอบว่า ≥ ตัวแรกของอนุกรมที่ 2 และ (ค่า - d) หาร c ลงตัว → เป็นจุดชน ตัวอย่างโค้ด #include<bits/

  5. โปรแกรม C++ หาขนาด Minimum Vertex Cover ของกราฟด้วย Binary Search

    Minimum Vertex Cover = ชุดจุด (vertices) ที่ทุกขอบ (edge) ในกราฟมีปลายทางอยู่ในชุดนี้อย่างน้อยหนึ่งปลาย ตัวอย่าง: กราฟที่จุด 3 และ 4 ครอบคลุมทุกขอบ → Minimum Vertex Cover size = 2 ใช้ Binary Search หาขนาดต่ำสุดที่เป็น Vertex Cover ได้ ตัวอย่างโค้ด #include<bits/stdc++.h> using namespace std;

  6. โปรแกรม C++ หาผลรวมหลักเลขจนเหลือหลักเดียว

    หาผลรวมหลักเลขของตัวเลขจนกว่าผลรวมจะกลายเป็นหลักเดียว (Single Digit) ตัวอย่าง: 14520 → 1+4+5+2+0 = 12 → 1+2 = 3 (คำตอบ) หลักการ: ผลรวมหลักเลขของตัวเลขที่หาร 9 ลงตัว = 9 เสมอ ตัวเลขอื่นหาร 9 取餘數 = ผลรวมสุดท้าย ตัวอย่างโค้ด #include<bits/stdc++.h> using namespace std; int sum_digits(int n) {

  7. โปรแกรม C++ หาสี่เหลี่ยมผืนผ้าที่เหมาะสมที่สุดครอบคลุมจุดที่กำหนด

    ได้รับจุด (x,y) และอัตราส่วนความยาว/ความกว้าง = l/b หาสี่เหลี่ยมที่ครอบจุดนี้และมีอัตราส่วนตามกำหนด ถ้ามีหลายรูปเลือกที่มีระยะห่างจากศูนย์กลางยุคลิดไปยังจุดนั้นน้อยที่สุด วิธีแก้: ลดรูปอัตราส่วน l/b หา min(n/l, m/b) เพื่ออยู่ในพื้นที่ (n,m) สมมติ (x,y) เป็นศูนย์กลาง ถ้าไม่ใช่ ปรับพิกัดโดยลบ/บวกครึ่

  8. โปรแกรม C++ หาหลักแรกของผลคูณอาร์เรย์

    หาหลักแรกของผลคูณสมาชิกทั้งหมดในอาร์เรย์ ตัวอย่าง: arr = {12, 5, 16} → ผลคูณ = 960 → หลักแรก = 9 ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; int calc_1digit(int arr[], int x) { long long int prod = 1; for(int i = 0; i = 10) prod = prod / 10; return prod; } int mai

  9. โปรแกรม C++ หาจำนวนสามเหลี่ยมจากจุดตัดของเส้นแนวนอนและแนวตั้ง

    หาจำนวนสามเหลี่ยมที่สร้างจากจุดตัดของเส้นแนวนอนและแนวตั้งที่กำหนด ใช้ Sweep Line Algorithm เก็บค่าเส้นทั้งหมด ตรวจสอบจุดตัดระหว่างเส้นแนวนอนและแนวตั้ง แล้วคำนวณจำนวนสามเหลี่ยมจากจุดตัด (nC3) ตัวอย่างโค้ด #include<bits/stdc++.h> #define maxy 1000005 #define maxn 10005 using namespace std; str

  10. โปรแกรม C++ หาความเป็นคู่คี่ (Parity) ของตัวเลขอย่างมีประสิทธิภาพ

    Parity (ความเป็นคู่คี่) = จำนวนบิต 1 ในการแทนค่าทศนิยมเป็นเลขฐานสอง จำนวนบิต 1 เป็นเลขคู่ → Even Parity จำนวนบิต 1 เป็นเลขคี่ → Odd Parity วิธีคำนวณเร็ว (Bitwise operations): 16) บิตขวาสุดของ y = parity (1 = odd, 0 = even) ตัวอย่างโค้ด 16); if (y & 1) return 1; return 0; } int main() {

  11. โปรแกรม C++ หาความน่าจะเป็นของสถานะใน Markov Chain ที่เวลาที่กำหนด

    หาความน่าจะเป็นจากสถานะเริ่มต้นไปสถานะสุดท้ายในเวลาที่กำหนดใน Markov Chain Markov Chain = กระบวนการสุ่มที่มีสถานะต่างๆ และความน่าจะเป็นการเปลี่ยนสถานะ ใช้เวลา 1 หน่วยต่อการเปลี่ยนสถานะ แสดงเป็น Directed Graph สร้างเมทริกซ์จาก Markov Chain โดย element (a,b) = ความน่าจะเป็นจากสถานะ a ไป b สูตร遞歸: P(t

  12. โปรแกรม C++ หาจุดยอด จุดโฟกัส และเส้นนำของพาราโบลา

    หาจุดยอด (vertex), จุดโฟกัส (focus) และเส้นนำ (directrix) ของพาราโบลา จากสมการมาตรฐาน: y = ax² + bx + c สูตร: Vertex: (-b/2a, (4ac - b²)/4a) Focus: (-b/2a, (4ac - b² + 1)/4a) Directrix: y = c - (b² + 1)/4a ตัวอย่างโค้ด #include <iostream> using namespace std; void calc_para(float a, float b

  13. โปรแกรม C++ ตรวจสอบว่าจุดพิกัดทั้งหมดอยู่บนสองเส้นขนานหรือไม่

    โจทย์: กำหนดอาร์เรย์ arr[] จุดพิกัดคือ (i, arr[i]) ตรวจสอบว่าจุดทั้งหมดอยู่บนสองเส้นตรงขนานได้หรือไม่ ตัวอย่าง: arr = {2,6,8,12,14} จุดอยู่บนสองเส้นขนาน เส้นแรก: (1,2), (3,8), (5,14) เส้นที่สอง: (2,6), (4,12) วิธีแก้: เปรียบเทียบความชัน (slope) ของเส้นที่สร้างจากจุด สามจุดแรกต้องมีสองจุดอยู่เส้นเดี

  14. โปรแกรม C++ ตรวจสอบว่ามีเส้นทางระหว่างสองเซลล์ในเมทริกซ์หรือไม่

    โปรแกรมตรวจสอบว่ามีเส้นทางจาก Source ไป Destination ในเมทริกซ์สี่เหลี่ยมจัตุรัสที่มีค่า 0,1,2,3: 0 = ผนังว่าง (Blank Wall) 1 = จุดเริ่มต้น (Source) 2 = จุดหมาย (Destination) 3 = เซลล์ว่าง (Blank Cell) มี Source และ Destination เพียงจุดเดียว เดินได้ 4 ทิศทาง (ไม่ใช่ทแยง) ใช้ BFS บนกราฟที่สร้างจากเ

  15. เพิ่ม 1 ให้กับตัวเลขที่เก็บในรูปแบบอาร์เรย์ของหลักเลขใน C++

    ตัวเลขที่เก็บในอาร์เรย์: แต่ละหลักเก็บในสมาชิกแต่ละตัว ความยาวอาร์เรย์ = จำนวนหลัก ตัวอย่าง: 351932 → {3,5,1,9,3,2} (สมาชิกสุดท้าย = หลักหน่วย, สมาชิกแรก = หลักสำคัญที่สุด) การบวก 1: บวกที่สมาชิกสุดท้าย ถ้าเป็น 9 จะมี carry ทำให้กลายเป็น 0 และบวก 1 ไปยังสมาชิกก่อนหน้า ต่อไปจนไม่มี carry ตัวอย่าง: {

  16. ความต่างสัมบูรณ์ของสมาชิกดัชนีคู่และคี่ในอาร์เรย์ C++

    อาร์เรย์เก็บสมาชิกชนิดเดียวกัน ดัชนีเริ่มจาก 0 (ตัวแรก index 0) หาความต่างสัมบูรณ์ระหว่างสมาชิกดัชนีคู่ และสมาชิกดัชนีคี่ ดัชนีคู่ = 0,2,4,6,8... ดัชนีคี่ = 1,3,5,7,9... ความต่างสัมบูรณ์ = |ค่า1 - ค่า2| Input: arr = {1, 2, 4, 5, 8} Output: Absolute difference of even numbers = 4 Absolute

  17. คำนวณความยาวเส้นโค้งจากมุมที่กำหนดใน C++

    มุม (Angle) — เกิดเมื่อสองรังสีตัดกันที่จุดหนึ่ง จุดตัดเรียกว่า Vertex เส้นโค้ง (Arc) — ส่วนของเส้นรอบวงที่ถูกอธิบายโดยมุม โจทย์: ได้รับมุมของวงกลมและเส้นผ่านศูนย์กลาง หาความยาวเส้นโค้ง Input: Angle = 45°, Diameter = 28 Output: Arc = 11 คำอธิบาย ความยาวเส้นโค้ง = (เส้นรอบวง) × (มุม/360°) = (π × d

  18. การเดินทางแบบ Anti-Clockwise Spiral ของ Binary Tree ใน C++

    Anti-Clockwise spiral traversal คือการเดินทางผ่านโหนดของ Binary Tree แบบเกลียวทวนเข็มนาฬิกา อัลกอริทึม ใช้ตัวแปร i=0, j=ความสูงของต้นไม้ flag=false วนลูป while i ≤ j: flag=false: พิมพ์ระดับ i จากขวาไปซ้าย (rightToLeft) เพิ่ม i, flag=true flag=true: พิมพ์ระดับ j จากซ้ายไปขวา (leftToRight) ลด j, fl

  19. นับจำนวนค่าสัมบูรณ์ที่ไม่ซ้ำกันในอาร์เรย์ที่เรียงแล้ว ด้วย C++

    อาร์เรย์ (Array) คือชุดสมาชิกชนิดเดียวกัน อาร์เรย์ที่เรียงแล้ว (Sorted Array) คืออาร์เรย์ที่เรียงจากน้อยไปมากหรือมากไปน้อย Distinct count คือจำนวนสมาชิกที่ไม่ซ้ำกัน Absolute distinct count คือ distinct count ของค่าสัมบูรณ์ (ค่าที่ไม่มีเครื่องหมาย) ตัวอย่าง: Input: [-3, 0, 3, 6] → Output: 3 (ค่าสัมบ

  20. ฟังก์ชัน c_str() ของ basic_string ใน C++ STL

    ฟังก์ชัน c_str() ของ basic_string คืนค่า pointer ไปยังอาร์เรย์ตัวอักษรที่จบด้วย null character เป็นเมธอดในตัว (built-in) ของ C++ STL ไวยากรณ์ const Char ptr* c_str() const รายละเอียด ไม่มีพารามิเตอร์ คืนค่า char pointer ชี้ไปยัง character array ที่จบด้วย NULL ตัวอย่าง #include <bits/stdc++.h>

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:76/301  20-คอมพิวเตอร์/Page Goto:1 70 71 72 73 74 75 76 77 78 79 80 81 82