Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. เพิ่ม Median ของอาร์เรย์หลังเพิ่ม K องค์ประกอบใน C++

    โจทย์ ได้รับอาร์เรย์ arr[] ขนาด N และจำนวนเต็ม K โดย K < N งานคือแทรก K จำนวนเต็มเข้าไปในอาร์เรย์เดิม เพื่อให้ Median ของอาร์เรย์ผลลัพธ์มีค่าสูงสุด ถ้าอินพุตอาร์เรย์คือ {1, 3, 2, 5} และ k = 3 อาร์เรย์เรียงแล้ว: {1, 2, 3, 5} แทรก 3 ตัวที่มากกว่า 5 อาร์เรย์กลายเป็น {1, 2, 3, 5, 6, 6, 6} Median ของอา

  2. เพิ่มค่าตัวเลขโดยจัดเรียงบิตใหม่ใน C++

    โจทย์ ได้รับ Unsigned Number หาตัวเลขสูงสุดที่สามารถสร้างได้โดยใช้บิตของตัวเลขที่กำหนด ถ้าตัวเลขอินพุตคือ 8 Binary Representation คือ 00000000000000000000000000001000 เพื่อให้สูงสุด ตั้ง MSB เป็น 1 ตัวเลขกลายเป็น 2147483648 Binary คือ 10000000000000000000000000000000 อัลกอริทึม 1. นับจำนวน Set Bits

  3. เพิ่มจำนวน Segment ความยาว p, q, r ใน C++

    โจทย์ ได้รับท่อนไม้ยาว L งานคือตัดท่อนไม้ให้จำนวน Segment ความยาว p, q, r มากที่สุด Segment ต้องมีความยาวเป็น p, q, หรือ r เท่านั้น ถ้า l = 15, p = 2, q = 3, r = 5 สามารถทำได้ 7 Segment ดังนี้ {2, 2, 2, 2, 2, 2, 3} อัลกอริทึม ใช้ Dynamic Programming แก้ปัญหา 1. เริ่มต้น dp[] array เป็น 0 2. วนลูปจน

  4. เพิ่มผลรวม arr[i]*i ใน C++

    โจทย์ ได้รับอาร์เรย์ N จำนวนเต็ม อนุญาตให้จัดเรียงใหม่ งานคือหาค่าสูงสุดของ Σ arr[i]*i โดย i = 0, 1, 2, ..., n-1 ถ้าอินพุตอาร์เรย์ = {4, 1, 6, 2} ผลรวมสูงสุดคือ 28 ถ้าจัดเรียงจากน้อยไปมาก {1, 2, 4, 6} = (1*0) + (2*1) + (4*2) + (6*3) = 28 อัลกอริทึม 1. จัดเรียงอาร์เรย์แบบ Ascending 2. วนลูปอาร์เรย์

  5. เพิ่มค่าของนิพจน์ที่กำหนดใน C++

    โจทย์ ได้รับจำนวนเต็มไม่เป็นศูนย์ 3 จำนวน a, b, c งานคือหาค่าสูงสุดที่เป็นไปได้โดยวางเครื่องหมายบวกและคูณระหว่างพวกเขาในลำดับใดก็ได้ โปรดสังเกตว่าการจัดเรียงตัวเลขใหม่ได้ แต่เครื่องหมายบวกและคูณต้องใช้ครั้งละ 1 ครั้ง ถ้า a = 1, b = 3, c = 5 ค่าสูงสุดคือ 20 ดังนี้ (1 + 3) * 5 = 20 อัลกอริทึม 1. ถ้าต

  6. เพิ่มค่า (arr[i] – i) – (arr[j] – j) ในอาร์เรย์ใน C++

    โจทย์ ได้รับอาร์เรย์ arr[] หาค่าสูงสุดของ (arr[i] – i) – (arr[j] – j) โดยที่ i ≠ j โดย i และ j อยู่ในช่วง 0 ถึง n-1 (n คือขนาดอาร์เรย์) ถ้าอินพุตอาร์เรย์คือ {7, 5, 10, 2, 3} ค่าสูงสุดคือ 9 ได้จาก (element 10 – index 2) - (element 2 – index 3) (10 – 2) – (2 – 3) = 8 – (-1) = 9 อัลกอริทึม 1. หาค่าสูง

  7. หาคู่ที่ใกล้เคียงที่สุดจากสอง Sorted Arrays ใน C++

    สมมติว่ามี Sorted Arrays สองอัน และตัวเลข x ต้องการหาคู่ที่ผลรวมใกล้ x ที่สุด คู่ต้องมีองค์ประกอบมาจากแต่ละอาร์เรย์ละตัว มีอาร์เรย์ A1[0..m-1] และ A2[0..n-1] และค่า x ต้องการหาคู่ A1[i] + A2[j] ที่ทำให้ |A1[i] + A2[j] - x| น้อยที่สุด เช่น A1 = [1, 4, 5, 7], A2 = [10, 20, 30, 40], x = 32 ผลลัพธ์คือ

  8. หาความแตกต่างความเข้ากันได้ระหว่างสองอาร์เรย์ใน C++

    พิจารณา 2 เพื่อนต้องการทดสอบความผูกพัน จะตรวจสอบว่าพวกเขาเข้ากันได้มากแค่ไหน ได้รับตัวเลข n ตัวเลข 1..n พวกเขาถูกขอให้จัดอันดับตัวเลข ต้องหาความแตกต่างความเข้ากันได้ (Compatibility Difference) ระหว่างพวกเขา ซึ่งก็คือจำนวน Mismatch ในการจัดอันดับสัมพัทธ์ของหนังสือ/ภาพยนตร์เดียวกันที่ทั้งคู่ให้มา เช่

  9. ข้อเสียของการใช้ whole namespace ใน C++

    ใน C++ เราใช้ Namespace ต่างๆ และสามารถสร้าง Namespace เองได้ เช่นมักใช้ Standard Namespace ชื่อ std เขียนว่า using namespace std; ใน Standard Library มีฟังก์ชันทั่วไปที่ใช้สร้างแอปพลิเคชัน เช่น Containers, Algorithms ฯลฯ ถ้าชื่อเหล่านี้อยู่ใน Global Scope เช่นถ้า Define Class queue ไว้ Global คุณจ

  10. Constructor Overloading ใน C++

    เหมือนกับ Function Overloading ที่เป็นคุณสมบัติหลักของภาษา Object-Oriented เราสามารถใช้ชื่อฟังก์ชันเดียวกันได้ถ้าชุดพารามิเตอร์ต่างกัน ที่นี่เราจะดูวิธี Overload Constructor ของ Class ใน C++ Constructor Overloading มีแนวคิดสำคัญดังนี้: Constructor ที่ Overload ต้องมีชื่อเดียวกันและจำนวน Arguments

  11. getline (string) ใน C++

    ใช้สำหรับดึงอักขระจาก Stream เป็น Unformatted Input และเก็บไว้ใน s เป็น C-String จนกว่าจะเจอ Delimiting Character หรือเขียนครบ n อักขระ (รวม Null Terminator) รูปแบบการประกาศคือ: basic_istream& getline (char_type* s, streamsize n); basic_istream& getline (char_type* s, streamsize n, char_typ

  12. การตั้งค่าสภาพแวดล้อมพัฒนา C++ (C++ Development Environment)

    Text Editor (โปรแกรมแก้ไขข้อความ) ใช้สำหรับพิมพ์โปรแกรม ตัวอย่าง Editor ได้แก่ Windows Notepad, OS Edit command, Brief, Epsilon, EMACS, vim หรือ vi ชื่อและเวอร์ชันของ Text Editor อาจแตกต่างกันไปตามระบบปฏิบัติการ เช่น Notepad ใช้ใน Windows ส่วน vim หรือ vi ใช้ได้ทั้ง Windows, Linux และ UNIX ไฟล์ที่ส

  13. Shuffle Array ด้วย STL ใน C++

    ที่นี่เราจะดู Shuffle และ random_shuffle ใน C++ ฟังก์ชันเหล่านี้ใช้สำหรับสลับลำดับองค์ประกอบในอาร์เรย์ เราสามารถใช้ Vector แทนอาร์เรย์ได้ การใช้งานคล้ายกัน มาดู random_shuffle() ก่อน ใช้สำหรับจัดเรียงองค์ประกอบในช่วง [left, right) แบบสุ่ม ฟังก์ชันนี้สลับตำแหน่งของแต่ละองค์ประกอบกับตำแหน่งที่เลือกแบ

  14. upper_bound ใน C++

    ที่นี่เราจะดูฟังก์ชัน upper_bound() ใน C++ STL ฟังก์ชันนี้คืน Iterator ที่ชี้ไปยังองค์ประกอบแรกใน Container ที่ถือว่าอยู่หลัง val รูปแบบคือ: iterator upper_bound (const value_type& val); const_iterator upper_bound (const value_type& val) const; ค่าที่คืนคือ Iterator ชี้ไปยังองค์ประกอบแรกใน

  15. สร้างอาร์เรย์จาก GCD ขององค์ประกอบติดกันในอาร์เรย์ที่กำหนดใน C++

    สมมติว่ามีอาร์เรย์ A[] ขนาด n องค์ประกอบ เราต้องหาอีกอาร์เรย์ B[] ขนาด n+1 ที่ทำให้ GCD ของ B[i] และ B[i+1] เท่ากับ A[i] ถ้ามีหลายคำตอบ ให้พิมพ์คำตอบที่ผลรวมอาร์เรย์น้อยที่สุด ดังนั้นถ้า A = [1, 2, 3] ผลลัพธ์คือ [1, 2, 6, 3] เมื่อ A มีแค่ 1 องค์ประกอบ คือ K แล้ว B = [K, K] ดังนั้น B[0] = A[0] ตอนนี

  16. สร้างอาร์เรย์จาก XOR ของทุกองค์ประกอบยกเว้น Index เดียวกันใน C++

    สมมติว่ามีอาร์เรย์ A[] ขนาด n องค์ประกอบบวก เราต้องสร้างอีกอาร์เรย์ B โดยที่ B[i] คือ XOR ของทุกองค์ประกอบของ A[] ยกเว้น A[i] ดังนั้นถ้า A = [2, 1, 5, 9] แล้ว B = [13, 14, 10, 6] วิธีแก้: หา XOR ของทุกองค์ประกอบของ A ก่อน เก็บไว้ในตัวแปร x แล้วสำหรับแต่ละ A[i] หา B[i] = x XOR A[i] ตัวอย่างโค้ด #inc

  17. เพิ่มผลรวมอาร์เรย์ด้วยการดำเนินการที่กำหนดใน C++

    คำอธิบาย มีอาร์เรย์ขนาด (2 × n − 1) จำนวนเต็ม เราสามารถเปลี่ยนเครื่องหมายของ n องค์ประกอบได้พอดี กล่าวคือ เลือก n องค์ประกอบ และคูณแต่ละตัวด้วย -1 หาผลรวมสูงสุดของอาร์เรย์ ตัวอย่าง ถ้าอินพุตอาร์เรย์คือ {-2, 100, -3} เราสามารถได้ผลรวมสูงสุดโดยเปลี่ยนเครื่องหมาย -2 และ -3 หลังเปลี่ยนอาร์เรย์กลายเป็น

  18. เพิ่มจำนวน Index ที่ a[i+1] > a[i] ใน C++

    โจทย์ arr[i] ตัวอย่าง ถ้าอินพุตอาร์เรย์คือ {300, 400, 400, 300} อาร์เรย์ที่จัดเรียงใหม่จะเป็น arr[i] ดังนั้นคำตอบคือ 2 อัลกอริทึม ถ้าองค์ประกอบทั้งหมดไม่ซ้ำกัน คำตอบคือ n-1 โดยตรง (n คือจำนวนองค์ประกอบ) ถ้ามีองค์ประกอบซ้ำ คำตอบคือ n - maxFrequency ตัวอย่างโค้ด #include <bits/stdc++.h> #de

  19. เพิ่มจำนวน Unique Pairs จากสองอาร์เรย์ใน C++

    โจทย์ ได้รับอาร์เรย์สองอันขนาดเท่ากัน N สร้างคู่ (Pair) จำนวนมากที่สุดโดยใช้องค์ประกอบ หนึ่งจากอาร์เรย์แรก และอีกหนึ่งจากอาร์เรย์ที่สอง โดยที่องค์ประกอบจากแต่ละอาร์เรย์ถูกใช้ได้สูงสุด 1 ครั้ง และค่าสัมบูรณ์ของความต่างระหว่างองค์ประกอบที่เลือกต้องน้อยกว่าหรือเท่ากับ K ที่กำหนด ตัวอย่าง ถ้าอินพุตคือ

  20. หาค่าสูงสุดใน Min Heap ใน C++

    โจทย์ ได้รับ Minimum Heap หาค่าสูงสุดใน Heap นั้น ตัวอย่าง ถ้า Heap อินพุตคือ ค่าสูงสุดคือ 55 อัลกอริทึม ใน Min Heap โหนดพาเรนต์จะน้อยกว่าลูกเสมอ ดังนั้น Non-leaf Node จึงไม่สามารถเป็นค่าสูงสุดได้ ค้นหาค่าสูงสุดใน Leaf Nodes เท่านั้น ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace st

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:112/301  20-คอมพิวเตอร์/Page Goto:1 106 107 108 109 110 111 112 113 114 115 116 117 118