Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. โปรแกรม C++ หาสตริงที่มีสตริงย่อยพาลินโดรมความยาวสูงสุด k

    สมมติว่าเรามีตัวเลขสองตัว n และ k เราพยายามสร้างสตริง S ที่มีตัวอักษรเพียง 3 ชนิดคือ a, b และ c ความยาวสูงสุดของสตริงย่อยของ S ที่เป็นพาลินโดรม ไม่เกิน k เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 3; k = 2 ผลลัพธ์จะได้ aab เพราะความยาวคือ 3 และสตริงย่อยพาลินโดรมคือ aa ความยาวอย่างน้อย 2 (คำตอบอื่นก็ได้) ขั้นต

  2. โปรแกรม C++ หาความยาวสตริงย่อยไม่ว่างที่ผลรวมเป็นเลขคู่

    สมมติว่าเรามีอาร์เรย์ A ที่มี n องค์ประกอบ เราต้องหาความยาวของสับเซต (subset) ที่ไม่ว่างขององค์ประกอบที่ผลรวมเป็นเลขคู่ หรือคืนค่า -1 เมื่อไม่มีสับเซตดังกล่าว เช่น ถ้าค่าที่ป้อนเข้าเป็น A = [1, 3, 7] ผลลัพธ์จะได้ 2 เพราะผลรวมของ [1, 3] คือ 4 ขั้นตอนการแก้ปัญหา เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดัง

  3. โปรแกรม C++ นับจำนวนการดำเนินการเพื่อให้ดัชนีน้อยกว่าค่า

    สมมติว่าเรามีอาร์เรย์ A ที่มี n องค์ประกอบ เราสามารถดำเนินการได้ไม่จำกัดครั้ง: เลือกจำนวนเต็มบวก k ใดๆ เลือกตำแหน่งใดๆ ในลำดับและแทรก k เข้าไปที่ตำแหน่งนั้น ลำดับเปลี่ยนไป เราดำเนินต่อกับลำดับนี้ในครั้งถัดไป เราต้องหาจำนวนการดำเนินการขั้นต่ำที่ต้องใช้เพื่อให้เงื่อนไข A[i] <= i สำหรับทุก i ในช่วง 0

  4. โปรแกรม C++ หาผู้ชนะเกมข้ามไม้กางเขน

    สมมติว่าเรามีตัวเลขสองตัว n และ k อมลและบิมลเล่นเกม กฎง่ายๆ อมลวาดไม้กางเขน n แทงเรียงกัน หลังจากนั้นผู้เล่นสลับกันขีดตัดไม้กางเขน k แทงจากซ้ายหรือขวาในแต่ละตา อมลเริ่มก่อน หากมีไม้กางเขนน้อยกว่า k แทงก่อนตาบางตา เกมจบ อมลชนะถ้าเขาทำตาได้มากกว่าบิมลอย่างเคร่งครัด เราต้องหาว่าใครจะชนะ เช่น ถ้าค่าที่

  5. โปรแกรม C++ หาสถานะห้องพักหลังตรวจสอบบันทึกการมาของแขก

    สมมติว่าเรามีสตริง S ที่มี L, R และตัวเลข 0 ถึง 9 พิจารณาว่ามีโรงแรม 10 ห้อง หมายเลข 0 ถึง 9 จากซ้ายไปขวา โรงแรมมี 2 ทางเข้า — ทางซ้าย และทางขวา เมื่อลูกค้ามาถึงทางซ้าย จะได้ห้องว่างที่ใกล้ทางซ้ายที่สุด เมื่อมาทางขวา จะได้ห้องว่างที่ใกล้ทางขวาที่สุด แต่เราสูญเสียรายการจัดห้อง แต่เราจำได้ทุกลูกค้า: เ

  6. โปรแกรม C++ หาความ醜陋 (Ugliness) ต่ำสุดของหอคอย

    สมมติว่าเรามีอาร์เรย์ A ที่มี n องค์ประกอบ พิจารณาว่ามีหอคอยบล็อก n ตัวเรียงกัน โหนดที่ i มีความสูง A[i] ในหนึ่งวัน เราสามารถดำเนินการได้: เลือกดัชนี i และ j (i != j) และย้ายบล็อกจากหอคอย i ไป j จะทำให้ A[i] ลดลง 1 และ A[j] เพิ่มขึ้น 1 ความ น่ารังเกียจ (Ugliness) ของอาคารคือ max(A) - min(A) เราต้องห

  7. โปรแกรม C++ หาเงินขั้นต่ำที่ต้องจ่ายซื้อน้ำ n ลิตร

    สมมติว่าเรามีตัวเลข 3 ตัว n, a และ b เราต้องการซื้อน้ำ n ลิตร มีขวดน้ำอยู่ 2 ประเภท คือ ขวด 1 ลิตร และขวด 2 ลิตร ขวดประเภทแรกราคา a บาท ขวดประเภทที่สองราคา b บาท เราต้องการใช้เงินน้อยที่สุด เราต้องหาจำนวนเงินขั้นต่ำที่ต้องจ่ายเพื่อซื้อน้ำ n ลิตรพอดี เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 7; a = 3; b = 2 ผล

  8. การส่งงานการบ้านใน C++ (Passing the Assignment)

    ในบทช่วยสอนนี้ เราต้องเขียนอัลกอริทึมเพื่อหาวิธีส่งงานการบ้านโดยไม่ให้ครูคุมสังเกตเห็น นักเรียนแต่ละคนต้องส่งงานให้ครูคุม งานของนักเรียน A อยู่กับนักเรียน B ดังนั้น นักเรียน B ต้องคืน/ส่งงานให้นักเรียน A โดยไม่ให้ครูคุมรู้ นักเรียนทุกคนนั่งในคิว เราต้องหาวิธีส่งงานคืนให้นักเรียน A โดยไม่ถูกจับ ข้อก

  9. จำนวนสตริงย่อยที่หาร 6 ลงตัวในสตริงตัวเลข ใน C++

    เราจะดูปัญหาที่เราได้รับสตริงตัวเลข และต้องหาว่ามีสตริงย่อยกี่ตัวที่หาร 6 ลงตัวในรูปแบบจำนวนเต็ม ควรสังเกตว่าข้อมูลนำเข้าอยู่ในรูปสตริงที่ประกอบด้วยตัวเลข (จำนวนเต็ม) แต่การตรวจสอบการหารลงตัวจะทำโดยถือว่าเป็นจำนวนเต็มเท่านั้น (ไม่ใช้ค่า ASCII ของสตริงนำเข้า) ข้อมูลนำเข้า str = 648 ข้อมูลส่งออก คำอ

  10. จำนวนสตริงย่อยที่หาร 8 ลงตัว แต่ไม่หาร 3 ลงตัว ใน C++

    ได้รับสตริงของตัวเลข 0-9 สำหรับปัญหานี้ เราต้องคำนวณจำนวนสตริงที่หาร 8 ลงตัว แต่ไม่หาร 3 ลงตัว นี่เป็นปัญหา 2 ขั้นตอน เราต้องเขียนโค้ดทีละขั้นตอนเพื่อแก้ปัญหา เช่น ข้อมูลนำเข้า str = 80 ข้อมูลส่งออก 2 ข้อมูลนำเข้า str = 7675636788 ข้อมูลส่งออก 15 แนวทางการหาคำตอบ เฉพาะตัวเลขที่ 3 หลักสุดท้ายหาร

  11. การกลับกันของโหนด K ตัวสลับกันใน Singly Linked List ด้วย C++

    ในบทช่วยสอนนี้ เราได้รับ linked list A ความยาว N และจำนวนเต็ม K เราต้องกลับลำดับคู่โหนดสลับกัน โดยขนาดของแต่ละคู่คือ K ยังกำหนดว่า N หาร K ลงตัว อาร์กิวเมนต์แรกคือหัวข้อ (head pointer) ของ linked list A และอาร์กิวเมนต์ที่สองคือจำนวนเต็ม K เช่น ข้อมูลนำเข้า null K=2 ข้อมูลส่งออก null null K=3

  12. อัลกอริทึม Kruskal หาต้นไม้ครอบคลุมขั้นต่ำ (Minimum Spanning Tree) แบบ Greedy ใน C++

    ต้นไม้ครอบคลุม (Spanning Tree) คือซับกราฟของกราฟเชื่อมต่อและไม่มีทิศทาง ที่เชื่อมต่อทุกโหนด (vertices) กราฟหนึ่งสามารถมีหลายต้นไม้ครอบคลุม ต้นไม้ครอบคลุมขั้นต่ำ (MST) ของแต่ละกราฟมีน้ำหนักเท่ากันหรือน้อยกว่าต้นไม้ครอบคลุมอื่นๆ ทุกตัว น้ำหนักถูกกำหนดให้กับขอบ (edges) ของต้นไม้ครอบคลุม และผลรวมคือน้ำห

  13. BST ใหญ่ที่สุดในต้นไม้แบบทวิภาค (Binary Tree) ใน C++

    ในต้นไม้แบบทวิภาค (Binary Tree) แต่ละโหนดลูกมีเพียงสองโหนด (ซ้ายและขวา) โครงสร้างต้นไม้เป็นการแทนข้อมูลอย่างง่าย Binary Search Trees (BST) เป็นประเภทพิเศษของ Binary Tree ที่ตรงตามเงื่อนไข: โหนดลูกซ้ายมีค่าน้อยกว่าโหนดพาเรนต์ โหนดลูกขวามีค่ามากกว่าโหนดพาเรนต์ สมมติว่าเราได้รับต้นไม้แบบทวิภาค และต้อ

  14. การสร้างคู่พาลินโดรมในอาร์เรย์คำ (หรือสตริง) ใน C++

    Madam หรือ racecar เป็นคำสองคำที่อ่านจากหน้าหลังและหลังหน้าได้เหมือนกัน เรียกว่า พาลินโดรม (Palindrome) หากเราได้รับชุดหรือรายการสตริง เราต้องเขียนโค้ด C++ เพื่อหาว่าสามารถนำสตริงสองตัวในรายการมาต่อกันได้เป็นพาลินโดรมหรือไม่ หากมีคู่ดังกล่าวอยู่ในรายการที่ให้มา เราต้องพิมพ์ Yes มิฉะนั้นพิมพ์ No ใน

  15. การสืบค้นสตริงย่อยแบบพาลินโดรมใน C++

    ในบทช่วยสอนนี้ เราต้องแก้ปัญหาการสืบค้นสตริงย่อยแบบพาลินโดรมของสตริงที่กำหนด การแก้ปัญหาการสืบค้นสตริงย่อยแบบพาลินโดรมซับซ้อนกว่าการสืบค้นทั่วไปใน C++ มาก ต้องใช้โค้ดและตรรกะที่ซับซ้อนกว่า ในบทช่วยสอนนี้ เราได้รับสตริง str และจำนวน Q คำสืบค้นสตริงย่อย[L...R] แต่ละคำมีค่า L และ R เราต้องเขียนโปรแกรม

  16. อาร์เรย์ขนาน (Parallel Array) ใน C++

    อาร์เรย์ขนาน (Parallel Array) เรียกอีกอย่างว่าโครงสร้างอาร์เรย์ (Structure Array) นิยาม − อาร์เรย์ขนานสามารถนิยามได้ว่าเป็นอาร์เรย์หลายตัวที่องค์ประกอบที่ i ของแต่ละอาร์เรย์เชื่อมโยงกันอย่างแน่นอน และร่วมกันสร้างเป็นเอนทิตี (entity) เดียวกัน อาร์เรย์เป็นคุณสมบัติพื้นฐานในภาษา C++ การสร้างอาร์เรย์ขน

  17. ปัญหาการแบ่งพาร์ติชันใน C++

    ในปัญหานี้ เราต้องสร้างโค้ด C++ เพื่อตรวจสอบว่าอาร์เรย์สามารถแบ่งเป็นสองเซตย่อยที่มีผลรวมเท่ากันได้หรือไม่ นอกจากนี้ยังต้องตรวจสอบเงื่อนไขว่าผลรวมขององค์ประกอบในทั้งสองเซตย่อยเท่ากันจริงหรือไม่ ปัญหาการแบ่งพาร์ติชันเป็นรูปแบบหนึ่งของปัญหา Subset Sum Problem ซึ่งเป็นรูปแบบหนึ่งของ Knapsack Problem เร

  18. โค้ด C++ หาจำนวนการจัดชุดแบตเตอรี่

    สมมติว่าเรามีแบตเตอรี่ n ก้อน ใช้ได้สูงสุด 5 ครั้ง มีอุปกรณ์ที่ต้องใช้แบตเตอรี่ 3 ก้อน และการใช้งานแต่ละครั้งเพิ่มจำนวนการใช้ของแบตเตอรี่ขึ้น 1 หากเราต้องใช้งานอุปกรณ์ k ครั้ง เราต้องหาว่าสามารถจัดชุดแบตเตอรี่ได้กี่ชุด แบตเตอรี่ไม่สามารถใช้ในสองอุปกรณ์พร้อมกัน และแบตเตอรี่ที่ใช้ครบ 5 ครั้งแล้วไม่สาม

  19. โค้ด C++ หาผู้ชนะเกม n รอบ

    สมมติว่ามีเกม 2 คนเล่น n รอบ คะแนนแต่ละรอบกำหนดในอาร์เรย์ scores โดยแต่ละองค์ประกอบเป็นรูปแบบ {คะแนนP1, คะแนนP2} ผู้ที่ได้คะแนนมากกว่าจะชนะรอบนั้น และผู้ชนะเกมคือคนที่ชนะรอบมากกว่า มิฉะนั้นจะเป็นเสมอ กำหนดคะแนน ให้หาผู้ชนะ เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 4, scores = {{4, 3}, {3, 2}, {5, 6}, {2, 5}}

  20. โค้ด C++ หาพื้นที่ที่กล่องใช้ในภาชนะ

    สมมติว่าเรามี n คู่ของกล่องที่ต้องส่งในภาชนะรูปสี่เหลี่ยมจัตุรัส ความกว้างของคู่กล่องกำหนดเป็นคู่ (a, b) และให้ในอาร์เรย์ dimensions หากเราวางความกว้างของกล่องขนานกัน เราต้องหาว่ากล่องจะใช้พื้นที่เท่าไหร่ในภาชนะ เราไม่สามารถซ้อนกล่องทับกันได้ เราต้องหาพื้นที่ขั้นต่ำที่จำเป็นสำหรับคู่กล่องทั้ง n คู่

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:295/301  20-คอมพิวเตอร์/Page Goto:1 289 290 291 292 293 294 295 296 297 298 299 300 301