Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. หาตัวอักษรที่ไม่ซ้ำตัวสุดท้ายในสตริงใน C++

    สมมติว่ามีสตริง str เราต้องหาตัวอักษรที่ไม่ซ้ำตัวสุดท้ายในมัน ดังนั้นถ้าสตริงอินพุตเป็น programming ตัวอักษรที่ไม่ซ้ำตัวแรกคือ n หากไม่มีตัวอักษรดังกล่าว ให้คืนค่า -1 เราสามารถแก้ได้โดยการสร้างอาร์เรย์ความถี่ (Frequency Array) ซึ่งจะเก็บความถี่ของแต่ละตัวอักษรของสตริงที่กำหนด เมื่อความถี่ถูกอัปเดตแล

  2. หาตัวเลขลำดับที่ n ที่มีหลัก k หรือหาร k ลงตัวใน C++

    ได้รับจำนวนเต็มบวกสองจำนวน n และ k เราต้องหาตัวเลขลำดับที่ n ที่มีหลัก k หรือหาร k ลงตัว k จะอยู่ในช่วง [2 ถึง 9] ดังนั้นถ้า n และ k เป็น 15 และ 3 ตามลำดับ ผลลัพธ์คือ 33 ตัวเลข [3, 6, 9, 12, 13, 15, 18, 21, 23, 24, 27, 30, 31, 33] นี่คือตัวเลขที่แต่ละองค์ประกอบมีหลัก k = 3 หรือหาร k ลงตัว และตัวเลขล

  3. หาตัวเลขจากรายการที่กำหนด ซึ่งค่าของฟังก์ชันใกล้เคียง A มากที่สุดใน C++

    สมมติว่ามีฟังก์ชัน F(n) ซึ่ง F(n) = P – (0.006*n) โดย P กำหนดให้ มียึดรายการจำนวนเต็มและตัวเลข A งานคือการหาตัวเลขจากรายการที่กำหนด ซึ่งค่าของฟังก์ชันใกล้เคียง A มากที่สุด ดังนั้นถ้า P = 12 และ A = 5 รายการจะเป็น {1000, 2000} ผลลัพธ์จะเป็น 1000 ดังนั้นถ้า P = 12 และ A = 5 สำหรับ 1000, F(1000) = 12 –

  4. หาคำนำหน้าร่วมยาวที่สุดระหว่างสองสตริงหลังสลับตัวอักษรสตริงที่สองใน C++

    สมมติว่ามีสตริงสองตัว str1 และ str2 หาคำนำหน้าร่วม (Longest Common Prefix) ที่ยาวที่สุดระหว่างพวกเขาหลังจากทำการสลับ (Swap) บนสตริงที่สองศูนย์หรือหลายครั้ง ในแต่ละครั้ง เราสามารถสลับตัวอักษรใดๆ ก็ได้สองตัว ดังนั้นถ้า str1 = HERE, str2 = THERE ผลลัพธ์จะเป็น 4 สตริงที่สองสามารถทำเป็น HERET ได้โดยเพียง

  5. หาจำนวนรูพรุนในแมทริกซ์ใน C++

    พิจารณาแมทริกซ์หนึ่ง เราต้องหาจำนวนรูพรุน (Cavities) ในแมทริกซ์ องค์ประกอบหนึ่งถูกแทนว่าเป็นรูพรุนเมื่อองค์ประกอบอื่นๆ ที่ล้อมรอบมันมีค่ามากกว่ามัน ดังนั้นถ้าแมทริกซ์เป็นแบบด้านล่าง: 456 715 456 ผลลัพธ์คือ 1 เราเพียงแค่ตรวจสอบองค์ประกอบรอบๆ และตัดสินใจ ตัวอย่าง #include <iostream> #define

  6. หาเส้นทางยาวที่สุดในแมทริกซ์ภายใต้เงื่อนไขที่กำหนดใน C++

    สมมติว่ามีแมทริกซ์สี่เหลี่ยมจัตุรัสขนาด n มีองค์ประกอบที่แตกต่างกันทั้งหมด เราต้องหาความยาวเส้นทางสูงสุด ซึ่งทุกเซลล์ตามเส้นทางเรียงเพิ่มขึ้นด้วยความต่าง 1 จากเซลล์หนึ่งสามารถเคลื่อนที่ได้ 4 ทิศทาง: ซ้าย, ขวา, บน, ล่าง ดังนั้นถ้าแมทริกซ์เป็นแบบด้านล่าง: 129 538 467 ผลลัพธ์จะเป็น 4 เส้นทางยาวที่ส

  7. หาสับอาร์เรี่ยาวที่สุดที่มีเลขคี่พอดี k ตัวใน C++

    สมมติว่ามีอาร์เรย์ที่มี n องค์ประกอบ ปัญหาคือการหาสับอาร์เรี่ยาวที่สุดที่มีเลขคี่พอดี k ตัว ดังนั้นถ้า A = [2, 3, 4, 11, 4, 12, 7] และ k = 1 ผลลัพธ์จะเป็น 4 สับอาร์เรย์คือ [4, 11, 4, 12] เราสามารถแก้ได้โดยใช้ Sliding Window (หน้าต่างเลื่อน) งานคือดังนี้: เริ่มต้น max := 0, count := 0 และ start := 0

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

    สมมติว่ามีอาร์เรย์ A แบบไม่เรียงลำดับ และตัวเลขสองตัว x และ y เราต้องหาความห่างขั้นต่ำระหว่าง x และ y ใน A อาร์เรย์อาจมีองค์ประกอบซ้ำได้ ดังนั้นถ้าอาร์เรย์คือ A = [2, 5, 3, 5, 4, 4, 2, 3], x = 3 และ y = 2 ความห่างขั้นต่ำระหว่าง 3 และ 2 คือเพียง 1 เพื่อแก้ปัญหานี้ เราต้องทำตามขั้นตอนเหล่านี้: เดินทา

  9. หาจำนวนเส้นทแยงมุมในรูปหลายเหลี่ยม 볼록 n ด้านใน C++

    สมมติว่ามีตัวเลข n และเราต้องหาจำนวนเส้นทแยงมุมสำหรับรูปหลายเหลี่ยม 볼록 n ด้าน ดังนั้นถ้า n = 5 จำนวนเส้นทแยงมุมจะเป็น 5 เนื่องจากเป็นรูปหลายเหลี่ยม 볼록 n ด้าน จากแต่ละมุมเราสามารถดึงเส้นทแยงมุมได้ n – 3 เส้น โดยเว้นมุมที่อยู่ติดกันสองมุมและตัวมันเอง ดังนั้นสำหรับ n มุม จะเป็น n*(n-3) แต่เนื่องจากเราน

  10. หาจำนวนขั้นตอนน้อยที่สุดเพื่อไปจาก N ถึง M ใน C++

    สมมติว่ามีจำนวนเต็มสองจำนวน N และ M เราต้องหาจำนวนขั้นตอนน้อยที่สุดเพื่อไปจาก N ถึง M โดยทำการดังนี้: คูณตัวเลข x ด้วย 2 ดังนั้น x จะเป็น 2*x ลบ 1 จากตัวเลข x ดังนั้นตัวเลขจะเป็น x – 1 ถ้า N = 4 และ M = 6 ผลลัพธ์จะเป็น 2 ดังนั้นถ้าเราทำการที่ 2 กับ N แล้ว N กลายเป็น 3 จากนั้นทำการที่ 1 กับค่าที่ปร

  11. หาจำนวนเหรียญน้อยที่สุดเพื่อจ่ายเงินรวมใน C++

    สมมติว่ามีตัวเลข N และเหรียญมูลค่า 1, 10 และ 25 ใช้ไม่จำกัด หาจำนวนเหรียญน้อยที่สุดที่ต้องใช้จ่ายให้ได้จำนวน N อย่างแน่นอน สมมติว่า N คือ 14 จำนวนเหรียญจะเป็น 5 คือ เหรียญมูลค่า 10 หนึ่งเหรียญ และเหรียญมูลค่า 1 สี่เหรียญ เพื่อแก้ปัญหานี้ เราต้องใช้ขั้นตอนเหล่านี้: ถ้า N < 10 ให้คืนค่า N เหรียญมู

  12. หาตัวเลขที่หายไปในลำดับเลขคณิต (Arithmetic Progression) ใน C++

    สมมติว่ามีอาร์เรย์ที่แสดงองค์ประกอบของลำดับเลขคณิตตามลำดับ มีองค์ประกอบหนึ่งหายไป เราต้องหาองค์ประกอบที่หายไป ดังนั้นถ้า arr = [2, 4, 8, 10, 12, 14] ผลลัพธ์คือ 6 เพราะ 6 หายไป ใช้การค้นหาแบบทวิภาค (Binary Search) เราสามารถแก้ปัญหานี้ได้ เราจะไปที่องค์ประกอบกลาง ตรวจสอบว่าความต่างระหว่างกลางและถัดจาก

  13. หาคู่ที่มีความต่างสูงสุดในคอลัมน์ใดคอลัมน์หนึ่งของแมทริกซ์ใน C++

    สมมติว่ามีแมทริกซ์ขนาด NxN เราต้องหาคู่ขององค์ประกอบที่สร้างความต่างสูงสุดจากคอลัมน์ใดคอลัมน์หนึ่งของแมทริกซ์ ดังนั้นถ้าแมทริกซ์เป็นดังนี้: 123 535 967 ผลลัพธ์จะเป็น 8 คู่นั้นคือ (1, 9) จากคอลัมน์ 0 แนวคิดง่ายๆ คือเราต้องหาความต่างระหว่างค่าสูงสุดและต่ำสุดของแต่ละคอลัมน์ จากนั้นคืนค่าความต่างสูง

  14. หาตัวเลขที่หายไปในลำดับเรขาคณิต (Geometric Progression) ใน C++

    สมมติว่ามีอาร์เรย์ที่แสดงองค์ประกอบของลำดับเรขาคณิตตามลำดับ มีองค์ประกอบหนึ่งหายไป เราต้องหาองค์ประกอบที่หายไป ดังนั้นถ้า arr = [1, 3, 27, 81] ผลลัพธ์คือ 9 เพราะ 9 หายไป ใช้การค้นหาแบบทวิภาค (Binary Search) เราสามารถแก้ปัญหานี้ได้ เราจะไปที่องค์ประกอบกลาง ตรวจสอบว่าอัตราส่วนระหว่างกลางและถัดจากกลางเ

  15. หาตัวคูณของ x ที่ใกล้ที่สุดกับ a^b ใน C++

    สมมติว่ามีจำนวนเต็มสามจำนวน a, b และ x งานคือการหาตัวคูณของ x ที่ใกล้ที่สุดกับ a^b ดังนั้นถ้า a = 5, b = 4 และ x = 3 ผลลัพธ์จะเป็น 624 เพราะ 5^4 = 625 และ 624 เป็นตัวคูณของ 3 ที่ใกล้ที่สุดกับ 625 งานนี้ง่าย เราต้องทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหา: คำนวณ num := a^b จากนั้นหา f := floor ของ (num/x)

  16. หาการเรียงสับเปลี่ยนของจำนวนธรรมชาติ N ตัวแรกที่เงื่อนไขที่กำหนดใน C++

    สมมติว่ามีจำนวนเต็มสองจำนวน N และ K และเราต้องหาการเรียงสับเปลี่ยน P ของจำนวนธรรมชาติ N ตัวแรก ซึ่งมีองค์ประกอบ K ตัวที่ทำให้เงื่อนไข GCD(P[i], i) > 1 สำหรับทุก 1 <= i <= N ดังนั้นเมื่อ N = 3 และ K = 1 ผลลัพธ์จะเป็น 2, 1, 3 และ gcd(2, 1) = 1, gcd(1, 2) = 1, gcd(3, 3) = 3 วิธีการง่ายๆ คือ เร

  17. หาการเรียงสับเปลี่ยนของ n ที่หารด้วย 3 ลงตัว แต่ไม่หารด้วย 6 ใน C++

    สมมติว่ามีตัวเลข n และเราต้องหาการเรียงสับเปลี่ยนของตัวเลขนี้ ที่หารด้วย 3 ลงตัว แต่ไม่หารด้วย 6 ลงตัว หากไม่สามารถสร้างค่าดังกล่าวได้ ให้คืนค่า -1 ตัวอย่างเช่น ถ้า n เป็น 336 ผลลัพธ์อาจเป็น 363 เรารู้ว่าตัวเลขที่หารด้วย 6 ลงตัว หมายถึงมันหารด้วย 3 และ 2 ลงตัว ดังนั้นทุกเลขคู่ที่หารด้วย 3 ลงตัว จะหา

  18. หาจำนวนเฉพาะ K ในอาร์เรย์ ที่ (A[i] % K) สูงสุดใน C++

    สมมติว่ามีอาร์เรย์ A ที่มี n จำนวนเต็ม เราต้องหาองค์ประกอบหนึ่ง K ซึ่ง K เป็นจำนวนเฉพาะ และ A[i] mod K สูงสุดสำหรับทุก i ที่ถูกต้อง ระหว่างค่า K ที่เป็นไปได้ทั้งหมด หากไม่พบตัวเลขดังกล่าว ให้คืนค่า -1 ตัวอย่างเช่น ถ้า A = [2, 10, 15, 7, 6, 8, 13] ผลลัพธ์จะเป็น 13 มีจำนวนเฉพาะ 3 ตัวคือ 2, 7 และ 13 ค่

  19. หาผลคูณของจำนวนเฉพาะระหว่าง 1 ถึง n ใน C++

    สมมติว่ามีตัวเลข n เราต้องหาผลคูณของจำนวนเฉพาะระหว่าง 1 ถึง n ดังนั้นถ้า n = 7 ผลลัพธ์จะเป็น 210 เพราะ 2 * 3 * 5 * 7 = 210 เราจะใช้วิธี Sieve of Eratosthenes เพื่อหาจำนวนเฉพาะทั้งหมด จากนั้นคำนวณผลคูณของพวกมัน ตัวอย่าง #include <iostream> using namespace std; long PrimeProds(int n) { bo

  20. หาตัวอักษรซ้ำที่ปรากฏแรกในสตริงใน C++

    สมมติว่ามีสตริง เราต้องหาตัวอักษรแรกที่ซ้ำกัน ดังนั้นถ้าสตริงคือ Hello Friends ตัวอักษรซ้ำแรกจะเป็น l เนื่องจากมี l สองตัวติดกัน เพื่อแก้ปัญหานี้ เราจะใช้เทคนิคการแฮช (Hashing) สร้างตารางแฮชหนึ่ง สแกนตัวอักษรแต่ละตัวทีละตัว หากตัวอักษรไม่มีอยู่ ให้แทรกลงในตารางแฮช หากมีอยู่แล้ว ให้คืนค่าตัวอักษรนั้น

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:103/301  20-คอมพิวเตอร์/Page Goto:1 97 98 99 100 101 102 103 104 105 106 107 108 109