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

    มี permutation seq ขนาด n และ m คู่ดัชนี pairs (ค่า 0..n-1) สามารถทำซ้ำได้ไม่จำกัด: เลือก j สลับ seq[pairs[j].first] กับ seq[pairs[j].second] หา i สูงสุดที่ทำให้ seq[i] = i ได้หลังสลับอย่างเหมาะสม ตัวอย่าง: n=4,m=2, seq={0,3,2,1}, pairs={{0,1},{2,3}} ผลลัพธ์: 2 ขั้นตอนการแก้ปัญหา (Connected Compon

  2. โปรแกรม C++ ตรวจสอบการเดินทางกลับบ้าน (Round Trip) จากทุกเมือง

    มี n เมือง m ถนน חד-ทิศทาง แต่ละถนน (source, dest, time) ต้องการสำหรับแต่ละเมือง หาเวลาน้อยที่สุดของ Round Trip (เริ่มเมืองนั้น เดินทางผ่านถนน ≥1 เส้น กลับมาที่เมืองเดิม) ถ้าไม่มี → -1 ตัวอย่าง: n=4,m=4, roads={{1,2,5},{2,3,8},{3,4,7},{4,1,6}} ผลลัพธ์: 26 26 26 26 (วงจร 1→2→3→4→1 รวม 26) ขั้นตอนกา

  3. โปรแกรม C++ หาชุดชิ้นส่วนที่มีคะแนนรวมสูงสุด

    ผู้ผลิตมีชิ้นส่วน n รุ่น แต่ละรุ่นมีคะแนน 3 เกณฑ์ (A,B,C) OEM ต้องการซื้อ m รุ่น (ไม่ซ้ำ) เพื่อเพิ่มค่า V = |ΣA| + |ΣB| + |ΣC| ให้สูงสุด ตัวอย่าง: n=6,m=4, ratings={{2,3,5},{3,5,2},{4,8,5},{1,5,3},{7,2,7},{4,3,6}} ผลลัพธ์: 56 (เลือกชิ้นส่วน 1,3,5,6 → A=17, B=16, C=23) ขั้นตอนการแก้ปัญหา (Enumerate

  4. โปรแกรม C++ หาค่า Unbalancedness ต่ำสุดของสตริงไบนารี

    สตริง S ประกอบด้วย 0, 1, ? สร้าง T โดยแทน ? ด้วย 0 หรือ 1 Unbalancedness = ค่าสูงสุดของ |count(0) - count(1)| ในทุก substring ของ T หาค่า Unbalancedness ต่ำสุดที่เป็นไปได้ ตัวอย่าง: S=0??0 ผลลัพธ์: 2 ขั้นตอนการแก้ปัญหา (Binary Search + Greedy Check) Binary Search คำตอบ x ในช่วง [1, 1e6] ฟังก

  5. โปรแกรม C++ หาค่าสุดท้ายของเมทริกซ์ภายใต้เงื่อนไขความต่างสัมบูรณ์

    กำหนดอาร์เรย์ A ขนาด N ค่าเป็น 1,2,3 เท่านั้น สร้างเมทริกซ์ X โดย X[1][j] = A[j] และ X[i][j] = |X[i-1][j] - X[i-1][j+1]| สำหรับ i=2..N, j=1..N+1-i หา X[N][1] (ค่าสุดท้าย) ตัวอย่าง: A=[1,2,3,1] ผลลัพธ์: 1 ขั้นตอนการแก้ปัญหา (Combinatorial / Lucas Theorem) แปลงปัญหา: คำนวณ arr[i] = |A[i+1] - A[i

  6. โปรแกรม C++ ตรวจสอบว่าสามารถเอาหินออกจากกล่องหมดได้หรือไม่

    มี N กล่องเรียงวงกลม กล่อง i มีหิน A[i] ก้อน การดำเนินการ: เลือกกล่อง i สำหรับ j=1..N นำหิน j ก้อนออกจากกล่อง (i+j)th (วนรอบ) ห้ามถ้ากล่องนั้นมีหินไม่พอ ต้องการทราบว่าสามารถนำหินออกหมดได้หรือไม่ ตัวอย่าง: A=[4,5,1,2,3] ผลลัพธ์: True (1) (เริ่มจากกล่องที่ 2) ขั้นตอนการแก้ปัญหา (Mathematical Analysi

  7. โปรแกรม C++ ตรวจสอบว่าซื้อเค้กและโดนัทได้พอดีกับเงินที่มีหรือไม่

    มีเงิน N บาท เค้กราคา 40 บาท โดนัทราคา 70 บาท ต้องการทราบว่าสามารถซื้อเค้กและโดนัท (รวมกันได้) ใช้เงินหมดพอดี N บาทหรือไม่ ตัวอย่าง: N=110 ผลลัพธ์: True (1) เพราะ 40+70=110 ขั้นตอนการแก้ปัญหา (DFS / Recursion) ฟังก์ชัน dfs(i): เงินสะสม i ถ้า N → false ถ้า i == N → true

  8. โปรแกรม C++ ตรวจสอบความสอดคล้องของสีหมวกแมว

    มี N ตัวแมว แต่ละตัวสวมหมวกสีหนึ่ง ตัวที่ i พูดว่า ในหมวกของแมวอื่น N-1 ตัว มีสีที่แตกต่างกันทั้งหมด A[i] สี ต้องการตรวจสอบว่ามีการจัดสีหมวกที่สอดคล้องกับข้อความทุกตัวหรือไม่ ตัวอย่าง: A=[1,2,2] ผลลัพธ์: True (1) (เช่น แมว 1 สีแดง, แมว 2-3 สีน้ำเงิน → แมว 1 เห็น 1 สี, แมว 2-3 เห็น 2 สี) ขั้นตอนการ

  9. โปรแกรม C++ หาค่าใช้จ่ายน้อยที่สุดสำหรับการสมัครบริการ OTT

    ผู้ให้บริโภคต้องการสมัครบริการ OTT n แพลตฟอร์ม มีแพ็กเกจ all-in-one ราคา k ดอลลาร์/เดือน (ดูทุกแพลตฟอร์ม) หรือสมัครแยกแต่ละตัว ราคา price[i] ต้องการแพลตฟอร์ม i ตั้งแต่เดือน start_month[i] ถึง end_month[i] หาค่าใช้จ่ายรวมน้อยที่สุด ตัวอย่าง: n=3,k=10, start={1,2,1}, end={3,3,2}, price={5,7,8} ผลลัพธ

  10. โปรแกรม C++ หาจำนวนการเปลี่ยนเซลล์น้อยที่สุดเพื่อเดินทางในกริด

    กริด x×y มี # (บล็อก) และ . (ทาง) เริ่ม (0,0) ถึง (x-1,y-1) เดินได้เฉพาะขวาและลง ต้องการหาจำนวนเซลล์ # น้อยที่สุดที่ต้องเปลี่ยนเป็น . เพื่อให้มีทางถึงปลายทาง (จุดเริ่มและปลายเป็น . แน่นอน) ตัวอย่าง: x=4,y=4, grid={..#., #.#., #.##, ###.} ผลลัพธ์: 1 (เปลี่ยน (2,2) เป็นทาง) ขั้นตอนการแก้ปัญหา (DP บน

  11. โปรแกรม C++ หาจำนวนการดำเนินการน้อยที่สุดเพื่อฆ่าศัตรูด้วยมีด

    โจทย์เกม: มีมีด n เล่ม แต่ละเล่มมีค่า {slash, throw} (ความเสียหายจากการระบาด และ โยน) โยนได้ครั้งเดียว ระบาดได้ไม่จำกัด ศัตรูมีชีวิต h หาจำนวนการดำเนินการ (ระบาด/โยน) น้อยที่สุดเพื่อลดชีวิตศัตรูเหลือ 0 ตัวอย่าง: n=2, h=11, knives={{4,5},{3,6}} ผลลัพธ์: 2 (โยนทั้งสองเล่ม: 5+6=11) ขั้นตอนการแก้ปัญหา

  12. โปรแกรม C++ หาจำนวนการเคลื่อนที่สูงสุดระหว่างเซลล์ว่างในกริด

    กริด h×w มีเซลล์บล็อก (#) และว่าง (.) ต้องการหาจำนวนการเคลื่อนที่ (ขั้นตอน) สูงสุดที่ต้องใช้ เพื่อเดินจากเซลล์ว่างหนึ่งไปอีกเซลล์ว่างหนึ่ง (เดิน 4 ทิศทาง ไม่ทะลุบล็อก) คือเส้นทางสั้นที่สุดที่ยาวที่สุด (diameter) ของกราฟเซลล์ว่าง ตัวอย่าง: h=4,w=4, grid={..#., #.#., ..##, ###.} ผลลัพธ์: 4 (จาก (0,0)

  13. โปรแกรม C++ หาลำดับการเคลื่อนที่ระหว่างจุดสองจุดบนมิติ 2

    มีจุด a(x1,y1) และ b(x2,y2) โดย y1 เริ่มที่ a เดินไป b กลับ a ไป b อีกครั้ง เดินทีละ 1 หน่วย แนวนอน/แนวตั้ง ห้ามผ่านจุดเดิมซ้ำ (ยกเว้น a,b) ต้องการสตริงการเคลื่อนที่: R ขวา, L ซ้าย, U บน, D ล่าง ตัวอย่าง: x1=0,y1=1,x2=3,y2=4 ผลลัพธ์: UUURRRDDDLLLLUUUURRRRDRDDDDLLLLU ขั้นตอนการแก้ปัญหา (สร้างสตริงต

  14. โปรแกรม C++ ดำเนินการกับลำดับข้อมูล (Queue + Priority Queue)

    มีลำดับว่าง และ n คำสั่ง (queries) รูปแบบ {query, data} 3 ประเภท: query=1: เพิ่ม data ต่อท้ายลำดับ query=2: พิมพ์ตัวแรกของลำดับ แล้วลบออก query=3: เรียงลำดับจากน้อยไปมาก หมายเหตุ: query=2,3 มี data=0 เสมอ ตัวอย่าง: n=9, queries={{1,5},{1,4},{1,3},{1,2},{1,1},{2,0},{3,0},{2,0},{3,0}} ผลลัพธ์

  15. โปรแกรม C++ หาจำนวนเซลล์ที่ต้องบล็อกเพื่อสร้างเส้นทางเดียวในกริด

    กริด h×w มีหุ่นยนต์ที่ (0,0) ต้องไป (h-1,w-1) เซลล์เป็น # (บล็อก) หรือ . (ทาง) หุ่นยนต์เดิน 4 ทิศทาง แต่อาจเดินวนรอบได้ ต้องบล็อกเซลล์ที่ไม่อยู่บนเส้นทางที่เลือก ให้เหลือเพียงเส้นทางเดียว หาจำนวนเซลล์ที่ต้องบล็อกเพิ่ม (ถ้าไม่มีทางเลย คืน -1) ตัวอย่าง: h=4,w=4, grid={..#., #.#., #.##, #...} ผลลัพธ์:

  16. โปรแกรม C++ หาคะแนนสูงสุดที่ลดได้จากกราฟโดยคงความเชื่อมต่อ

    กำหนดกราฟไม่มีทิศทาง มีน้ำหนัก n จุดยอด m เส้นขอบ คะแนนกราฟ = ผลรวมน้ำหนักขอบทั้งหมด น้ำหนักอาจเป็นลบ (ลบออกคะแนนจะเพิ่ม) ต้องลบขอบบางส่วนเพื่อทำให้คะแนนน้อยที่สุด (คือลดคะแนนมากที่สุด) แต่กราฟต้องยังคงเชื่อมต่อ ต้องการหาจำนวนคะแนนที่ลดได้สูงสุด ตัวอย่าง: n=5,m=6, edges={{2,{1,2}},{2,{1,3}},{1,{2,3

  17. โปรแกรม C++ ตรวจสอบภาพสองภาพตรงกันหลังหมุนและเลื่อน

    มีภาพสี่เหลี่ยม n×n สองภาพ (first, second) พิกเซลเป็น x (ดำ) หรือ . (ขาว) ตรวจสอบว่า second ตรงกับ first หลังจากหมุน 90° และเลื่อน (translation) ได้กี่ครั้งก็ตาม หากตรงกันคืน true มิฉะนั้น false ตัวอย่าง: n=4, first={..x., x.x., x.xx, xx..}, second={..xx, x.xx, .x.x, ..x.} ผลลัพธ์: False (0) ขั้นต

  18. โปรแกรม C++ หากำไรสูงสุดจากการขายรถยนต์สีแดงและสีน้ำเงิน

    บริษัทรถยนต์ต้องขาย p คันสีแดง และ q คันสีน้ำเงิน มีสต็อก: a คันสีแดง, b คันสีน้ำเงิน, c คันไม่มีสี (ทาสีได้ทั้ง 2 สี) ราคาในอาร์เรย์ A, B, C ตามลำดับ ต้องการกำไรสูงสุด ตัวอย่าง: p=3,q=3,a=3,b=3,c=2, A={150000,200000,200000}, B={150000,120000,180000}, C={210000,160000,150000} ผลลัพธ์: 1100000 ขั้น

  19. โปรแกรม C++ ตรวจสอบว่ากองตัวอักษรสามารถว่างเปล่าได้หรือไม่

    มีตัวอักษร 2n ตัว แต่ละตัวมีตัวเลข 1 ถึง n (แต่ละตัวเลขมี 2 ใบ) จัดเป็น m กอง (stacks) ต้องการว่างเปล่าทุกกองโดย: เลือก 2 กอง นำตัวอักษรบนสุดออกทั้งคู่ ต้องมีตัวเลขเท่ากัน ถ้าทำได้พิมพ์ true มิฉะนั้น false ตัวอย่าง: n=3, m=2, stacks={{2,1,3},{2,1,3}} ผลลัพธ์: true (1) เพราะนำออกคู่ๆ ได้หมด ขั้นตอน

  20. โปรแกรม C++ ตรวจสอบว่าจำนวนเต็มเป็นคู่เฉพาะสัมพัทธ์ (Coprime) หรือไม่

    กำหนดอาร์เรย์ nums ขนาด n ต้องจัดประเภทว่า: Pairwise Coprime: gcd(nums[i], nums[j]) = 1 สำหรับทุกคู่ i < j Setwise Coprime: gcd(nums[0], nums[1], ..., nums[n-1]) = 1 (แต่ไม่ใช่ pairwise) Not Coprime: gcd 1 ตัวอย่าง: n=4, nums={7,11,13,17} ผลลัพธ์: The numbers are pairwise coprime ขั้นตอนกา

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:289/301  20-คอมพิวเตอร์/Page Goto:1 283 284 285 286 287 288 289 290 291 292 293 294 295