Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python
Python
  1. โปรแกรมตรวจสอบว่าโต๊ะหมากรุกเป็นคำตอบ N-Queens ที่ถูกต้องหรือไม่ใน Python

    มีเมทริกซ์ n×n แทนกระดานหมากรุก 1=ควีน 0=ว่าง ตรวจสอบว่าเป็นคำตอบ N-Queens ที่ถูกต้อง (ไม่มีควีนโจมตีกัน) เช่น เมทริกซ์ 5x5 ที่มีควีนวางถูกต้อง ให้ True ขั้นตอนการแก้ปัญหา ใช้เซต rows, cols, diags, rev_diags เก็บตำแหน่งควีน วนทุกเซลล์: ถ้าเป็น 1 เพิ่ม i ใน rows, j ใน cols, i-j ใน diags, i+j ใน rev

  2. โปรแกรมหาสตริงทั้งหมดที่พิมพ์ได้จากหมายเลขโทรศัพท์ใน Python

    มีสตริงตัวเลข 2-9 หา combination ตัวอักษรทั้งหมดตามแป้นโทรศัพท์ (2=abc, 3=def, ..., 9=wxyz) เช่น 49 ให้ [gw,gx,gy,gz,hw,hx,hy,hz,iw,ix,iy,iz] ขั้นตอนการแก้ปัญหา Mapping ตัวเลข→ตัวอักษร Recursive backtracking: เลือกตัวอักษรแต่ละตัวของตัวเลขปัจจุบัน แล้วเรียกต่อระดับถัดไป ถ้าครบทุกตัวเลข เพิ่มสตริงเ

  3. โปรแกรมหาจำนวนวันขั้นต่ำที่ต้องรอเพื่อทำกำไรใน Python

    มีราคาหุ้นรายวัน หาวันที่ต้องรอขั้นต่ำจากวัน i จนทำกำไรได้ (ราคาสูงกว่า) ถ้าไม่มีให้ 0 เช่น prices=[4,3,5,9,7,6] ให้ [2,1,1,0,0,0] ขั้นตอนการแก้ปัญหา ใช้ Monotonic Stack เก็บ (index, price) เรียงราคาลดลง ราคาบนสุด stack ให้ pop และคำนวณวันต่าง Push ราคาปัจจุบันเข้า stack ตัวอย่างโค้ด q[-1][1]:

  4. โปรแกรมหาเวลาที่ใกล้ที่สุดจากการนำตัวเลขเดิมมาใช้ซ้ำใน Python

    มีเวลา 24 ชั่วโมง hh:mm หาเวลาถัดไปที่ใกล้ที่สุดที่จัดจากตัวเลขเดิมได้ (ใช้ซ้ำได้ไม่จำกัด) เช่น s=03:15 ให้ 03:30 ขั้นตอนการแก้ปัญหา เก็บตัวเลข 4 ตัวใน use Backtracking สร้างเวลาที่เป็นไปได้ทั้งหมด (ตรวจสอบชั่วโมง 0-23, นาที 0-59) เรียงเวลาทั้งหมด หาเวลาถัดไปของ s ถ้าไม่มีคืนเวลาแรก (วันถัดไป) ตั

  5. โปรแกรมนับจำนวนคำที่เป็นการต่อคำอื่นในรายการใน Python

    มีรายการคำ หาจำนวนคำที่เป็นการต่อของคำอื่นในรายการเดียวกัน (ซ้ำได้, ต่อได้หลายคำ) เช่น words=[hello,world,helloworld,famous,worldfamous,programming] ให้ 2 (helloworld=hello+world, worldfamous=world+famous) ขั้นตอนการแก้ปัญหา สร้าง Trie จาก words ทุกคำ DFS ตรวจสอบแต่ละคำ: ที่โหนดจบคำ (*) ลองเรียก D

  6. โปรแกรมหาความยาวคำที่ยาวที่สุดที่สร้างได้จากตัวอักษรที่กำหนดใน Python

    มีรายการคำและสตริง letters หาความยาวคำยาวที่สุดที่จัดเรียงจาก letters ได้ มี * แทนตัวอักษรอะไรก็ได้ ไม่ต้องใช้หมด เช่น words=[prince,rice,price,limit,hello], letters=*r**ce* ให้ 6 (prince) ขั้นตอนการแก้ปัญหา has := Counter(letters) นับตัวอักษรและ * ฟังก์ชัน valid(s): นับความต้องการของ s, คำนวณ ext

  7. โปรแกรมหาความยาวเส้นทางสลับซ้ายขวาที่ยาวที่สุดในต้นไม้แบบทวิภาคใน Python

    มีต้นไม้แบบทวิภาค หาเส้นทางที่สลับซ้าย-ขวา-ซ้าย... (หรือ ขวา-ซ้าย-ขวา...) ไปลงลึกที่สุด เช่น ต้นไม้ที่มีโหนด 2,3,4,5,6,7,8 ให้ 5 เส้นทาง [2,4,5,7,8] ขั้นตอนการแก้ปัญหา DFS พร้อม flag บอกทิศทางที่ควรไป (True=ซ้าย, False=ขวา) ถ้า flag=True: ไปซ้ายต่อเนื่อง (count+1) หรือไปขวาเริ่มใหม่ (count=1) ถ้า

  8. โปรแกรมแปลงสตริงเป็นรูปแบบ Zigzag จำนวนบรรทัด k ใน Python

    มีสตริง s และ k เขียนตัวอักษรทแยงลงมาจนถึงบรรทัด k แล้วทแยงขึ้น จนครบ สร้างสตริงใหม่จากการอ่านแต่ละบรรทัด เช่น s=ilovepythonprogramming, k=5 ให้รูปแบบ zigzag ตามภาพ ขั้นตอนการแก้ปัญหา line := dict เก็บ (ตัวอักษร, ตำแหน่ง) ต่อบรรทัด cnt=0, delta=1 ควบคุมทิศทางขึ้นลง วนอ่าน s: ใส่ใน line[cnt], อัปเด

  9. โปรแกรมหาค่าใช้จ่ายรวมในการส่งสินค้าทั้งหมดใน Python

    มี ports adjacency list และ shipments คู่ [i,j] ต้องการส่งจาก i ไป j ค่าใช้จ่าย = ระยะทางสั้นที่สุด หาผลรวมค่าใช้จ่ายทั้งหมด เช่น ports=[[1,4],[2],[3],[0,1],[]] shipments=[[1,4]] ให้ 4 (เส้นทาง 1→2→3→0→4) ขั้นตอนการแก้ปัญหา สร้าง adjacency matrix dist จาก ports (INF สำหรับไม่เชื่อม) Floyd-Warshall

  10. โปรแกรมหาความยาวรอบสั้นที่สุดที่มี target ในกราฟมีทิศทางใน Python

    มี adjacency list กราฟมีทิศทาง และค่า target หาความยาวรอบสั้นที่สุดที่ผ่าน target ถ้าไม่มีคืน -1 เช่น กราฟ [[1,4],[2],[3],[0,1],[]] target=3 ให้ 3 รอบ 1→2→3→1 ขั้นตอนการแก้ปัญหา BFS จาก target: visited กันซ้ำ, l ชั้นปัจจุบัน แต่ละรอบเพิ่ม length ขยายไปเพื่อนบ้าน ถ้าพบ target คืน length จบลูปไม่พบค

  11. โปรแกรมหาขนาดเครื่องบินขั้นต่ำสำหรับนักดำน้ำใน k วันใน Python

    มีรายการ nums แทนกลุ่มคนดำน้ำ และ k วัน หาขนาดเครื่องบินขั้นต่ำที่รับได้ทุกกลุ่มใน k วัน (เรียงลำดับ, เครื่องบินบินวันละ 1 ครั้ง) เช่น nums=[16,12,18,11,13], k=3 ให้ 28 จัดกลุ่ม [16,12], [18], [11,13] ขั้นตอนการแก้ปัญหา Binary Search คำตอบระหว่าง max(nums) ถึง sum(nums) เพิ่ม mid คืนค่า start ตั

  12. โปรแกรมหาสถานะจรวดหลังชนกันใน Python

    รายการ nums แทนจรวด: บวก=ขวา, ลบ=ซ้าย, ค่าสัมบูรณ์=ขนาด จรวดชนกัน ตัวเล็กทำลาย ตัวใหญ่เดินต่อ เท่ากัน ทั้งคู่ทำลาย ทิศทางเดียวกันไม่ชน หาสถานะท้ายสุด เช่น nums=[3,8,5,-5] ให้ [3,8] เพราะ 5 และ -5 ทำลายกัน ขั้นตอนการแก้ปัญหา ใช้ list ls จำลองสแต็ก จรวดบวก: push เข้า ls จรวดลบ: push แล้วเช็คย้อนหลัง

  13. โปรแกรมหาจำนวนสับเมทริกซ์สี่เหลี่ยมจัตุรัสที่เป็น 1 ทั้งหมดใน Python

    มีเมทริกซ์ไบนารี 2D หาจำนวนสับเมทริกซ์สี่เหลี่ยมจัตุรัสที่ทุกค่าเป็น 1 เช่น เมทริกซ์ 5x4 ให้ 17 (12 ตัว 1x1, 4 ตัว 2x2, 1 ตัว 3x3) ขั้นตอนการแก้ปัญหา DP: matrix[i][j] เก็บขนาดสี่เหลี่ยมจัตุรัสที่ใหญ่ที่สุดลงท้ายที่ (i,j) ถ้า i==0 หรือ j==0: res += matrix[i][j] ถ้า matrix[i][j]==1: matrix[i][j] = m

  14. โปรแกรมตรวจสอบลำดับ push pop ของสแต็กว่าถูกต้องหรือไม่ใน Python

    มีรายการ pushes และ pops ตรวจสอบว่าเป็นลำดับ push/pop ของสแต็กที่ถูกต้องหรือไม่ เช่น pushes=[1,2,5,7,9], pops=[2,1,9,7,5] ให้ True ขั้นตอนการแก้ปัญหา จำลองสแต็ก: push ตาม pushes หลัง push แต่ละครั้ง while สแต็กไม่ว่างและ top == pops[i] ให้ pop และ i++ ท้ายสุดถ้าสแต็กว่างคืน True มิฉะนั้น False ตั

  15. โปรแกรมหาขนาดสับลิสต์ยาวที่สุดที่ความเร็วรถคงที่ใน Python

    มีรายการตำแหน่งรถในช่วงเวลาเท่ากัน หาสับลิสต์ยาวที่สุดที่ความเร็วคงที่ (ความต่างตำแหน่งเท่ากัน) เช่น positions=[0,4,8,12,6,4,0] ให้ 4 สับลิสต์ [0,4,8,12] ขั้นตอนการแก้ปัญหา เก็บ distance เริ่มต้นระหว่าง 2 ตัวแรก วนตรวจสอบความต่างติดกัน ถ้าเท่า distance เพิ่ม current มิฉะนั้นรีเซ็ต อัปเดต max_cnt ต

  16. โปรแกรมนับจำนวน stepping number ที่มี n หลักใน Python

    Stepping number คือตัวเลขที่หลักติดกันต่างกัน 1 (เช่น 123 เป็น, 124 ไม่เป็น) หาจำนวน stepping number n หลัก mod 10^9+7 เช่น n=2 ให้ 17 ตัว: [12,23,34,45,56,67,78,89,98,87,76,65,54,43,32,21,10] ขั้นตอนการแก้ปัญหา dp[d] := จำนวน stepping number ที่ลงท้ายด้วย d เริ่ม dp = [1]*10 (n=1) วน n-1 รอบ: ndp

  17. โปรแกรมนับจำนวนสตริงสูงสุดที่สร้างได้จากรายการคำและจำนวนตัวอักษรใน Python

    มีรายการสตริงประกอบ A และ B และค่า a, b หาจำนวนสตริงสูงสุดที่สร้างได้ ใช้ A ได้สูงสุด a ตัว B ได้สูงสุด b ตัว ไม่ซ้ำ เช่น strings=[AAABB,AABB,AA,BB], a=4, b=2 ให้ 2 เลือก [AABB,AA] ขั้นตอนการแก้ปัญหา แปลงแต่ละสตริงเป็นคู่ (จำนวน A, จำนวน B) DP แบบ 0/1 Knapsack: ans[(a,b)] = จำนวนสูงสุด สำหรับแต่ละ

  18. โปรแกรมหาผู้สมัครที่ได้คะแนนเสียงมากกว่า n/3 ใน Python

    มีรายการ nums แทนคะแนนเสียง หา ID ผู้สมัครที่ได้มากกว่า ⌊n/3⌋ คะแนน เรียงน้อยไปมาก เช่น nums=[3,2,6,6,6,6,7,7,7,7,7] ให้ [6,7] เพราะ 6 และ 7 ได้ 40% คะแนน ขั้นตอนการแก้ปัญหา เรียง nums ข้ามทีละ n//3 ตัว ตรวจสอบจำนวนครั้งที่ปรากฏ ถ้ามากกว่า n//3 ใส่ในชุดคำตอบ คืนค่าที่เรียงแล้ว ตัวอย่างโค้ด class

  19. โปรแกรมหาจำนวน subsequence น้อยที่สุดที่ต่อกันได้ target ใน Python

    มีสตริง source และ target หาจำนวน subsequence น้อยที่สุดของ source ที่ต่อกันแล้วได้ target ถ้าไม่ได้คืน -1 เช่น source=xyz, target=xyzyzz ให้ 3 เพราะ [xyz,yz,z] ขั้นตอนการแก้ปัญหา ใช้ two-pointer: วนอ่าน source หาตัวอักษรตรง target แต่ละรอบ source หาได้กี่ตัวใน target ถ้าหาไม่ได้เลยในรอบหนึ่ง คืน

  20. โปรแกรมนับจำนวน subsequence ที่อยู่ในรายการคำใน Python

    มีรายการคำ words และสตริง s หาจำนวนคำใน words ที่เป็น subsequence ของ s เช่น words=[xz,xw,y], s=xyz ให้ 2 เพราะ xz และ y เป็น subsequence ขั้นตอนการแก้ปัญหา จัดกลุ่มคำตามตัวอักษรแรกใน d วนอ่านตัวอักษรใน s: นำคำที่ขึ้นต้นด้วยตัวอักษรนั้นออกมาประมวลผล ถ้าความยาว 1 เพิ่มคำตอบ มิฉะนั้นย้ายส่วนที่เหลื

Total 9001 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:194/451  20-คอมพิวเตอร์/Page Goto:1 188 189 190 191 192 193 194 195 196 197 198 199 200