Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. อัลกอริทึม Fleury สำหรับพิมพ์ Eulerian Path หรือ Circuit ใน C++

    อัลกอริทึม Fleury ใช้เพื่อแสดง Euler path หรือ Euler circuit จากกราฟที่กำหนด ในอัลกอริทึมนี้ เริ่มจากเส้นขอบหนึ่ง แล้วพยายามย้ายไปยังโหนดติดกันโดยการลบโหนดก่อนหน้า ทำให้กราฟง่ายลงในแต่ละขั้นตอนเพื่อหา Euler path หรือ circuitเราต้องตรวจสอบกฎบางอย่างเพื่อให้ได้ path หรือ circuit −กราฟต้องเป็น Euler Gr

  2. ตรวจสอบ Integer Overflow ใน C++

    วิธีที่ปลอดภัยที่สุดคือตรวจสอบ overflow ก่อนที่จะเกิดขึ้น มีวิธีแฮ็กบางอย่างในการตรวจสอบ integer overflow ดังนั้นหากคุณต้องการตรวจจับ overflow ในการบวก unsigned int สามารถตรวจสอบว่าผลลัพธ์น้อยกว่าค่าที่บวกเข้ามาหรือไม่ เช่นตัวอย่างunsigned int x, y; unsigned int value = x + y; bool overflow = value

  3. ตรวจสอบสตริงไบนารีว่ามี 0 อยู่ระหว่าง 1 หรือไม่ใน C++

    นี่คือโจทย์น่าสนใจอีกข้อหนึ่ง เราต้องตรวจสอบว่าสตริงมี 0 อยู่ระหว่าง 1 หรือไม่ หากไม่มี สตริงถือว่าถูกต้อง มิฉะนั้นไม่ถูกต้องสมมติมีสตริง 3 สตริง −100011110100000111110001111101111จาก 3 สตริงนี้ มีเพียง B (00001111100) ที่ถูกต้อง เพราะไม่มี 0 อยู่ภายในกลุ่มของ 1วิธีแก้คือ หา index ของ 1 ตัวแรก และ 1

  4. ตรวจสอบสตริงไบนารีว่ามี 1 ติดกัน 2 ตัวทุกที่ใน C++

    นี่คือโจทย์ที่น่าสนใจ เราต้องเขียนโค้ดที่รับสตริงซึ่งต้องผ่านเกณฑ์ดังนี้ทุกกลุ่มของ 1 ที่ติดกัน ต้องมีความยาวเท่ากับ 2 เท่านั้นทุกกลุ่มของ 1 ที่ติดกัน ต้องปรากฏหลัง 0 อย่างน้อย 1 ตัวเช่น สตริง 0110 ถือว่าถูกต้อง แต่ 001110 และ 010 ไม่ถูกต้องวิธีแก้ไขคือ หาตำแหน่งของ 1 และตรวจสอบว่ามันเป็นส่วนหนึ่งขอ

  5. ตรวจสอบว่า Directed Graph เชื่อมต่อหรือไม่ใน C++

    เพื่อตรวจสอบการเชื่อมต่อของกราฟ เราจะพยายามท่องไปยังโหนดทั้งหมดโดยใช้อัลกอริทึมท่องใดๆ หลังจากท่องเสร็จ หากมีโหนดใดที่ยังไม่ได้ถูกเยี่ยมชม กราฟก็จะไม่ได้เชื่อมต่อสำหรับ Directed Graph เราจะเริ่มท่องจากทุกโหนดเพื่อตรวจสอบการเชื่อมต่อ บางครั้งเส้นขอบอาจมีเฉพาะขอบออกไปแต่ไม่มีขอบเข้า ทำให้โหนดนั้นไม่ถู

  6. C++17 If Statement with Initializer (คำสั่ง If พร้อมตัวเริ่มต้น)

    C++17 ขยายไวยากรณ์ if statement ให้สามารถประกาศตัวแปรเริ่มต้น (initializer) ภายใน if เองได้ เรียกว่า if statement with initializer ช่วยลดขอบเขตตัวแปร (scope) ป้องกันการรั่วไหลของตัวแปรนอกบล็อก ตัวอย่างก่อน C++17 #include <iostream> #include <cstdlib> using namespace std; int main() {

  7. ตรวจสอบว่าสตริงประกอบด้วยตัวอักษรสลับกันสองตัวหรือไม่ ใน C++

    ตรวจสอบว่าสตริงประกอบด้วยตัวอักษรสลับกันสองตัว (alternating characters) หรือไม่ ตัวอย่าง: XYXYXY = valid, ABCD = invalid วิธี: ตรวจสอบว่าตัวอักษรตำแหน่ง i และ i+2 เหมือนกันทุกคู่ ถ้าไม่เหมือน = false และตัวแรกไม่เท่ากับตัวที่สอง ตัวอย่างโค้ด #include <iostream> using namespace std; bool hasA

  8. ตรวจสอบว่าเลขใหญ่หาร 15 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 15 ลงตัวหรือไม่ กฎ: หาร 15 ลงตัว ⇔ หาร 5 ลงตัว (หลักสุดท้าย 0 หรือ 5) และ หาร 3 ลงตัว (ผลรวมหลักเลขหาร 3 ลงตัว) ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv15(string num) { int n = num.length(); if (num[n-1] != 5 && num[n-1] != 0)

  9. ตรวจสอบว่าเลขใหญ่หาร 11 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 11 ลงตัวหรือไม่ กฎ: ผลรวมหลักตำแหน่งคี่ = ผลรวมหลักตำแหน่งคู่ → หาร 11 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv11(string num) { int n = num.length(); long odd_sum = 0, even_sum = 0; for (int i = 0; i < n; i++) {

  10. ตรวจสอบว่าเลขใหญ่หาร 2, 3 และ 5 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 2, 3, 5 ลงตัวพร้อมกันหรือไม่ กฎ: หาร 2,3,5 ลงตัว ⇔ หาร LCM(2,3,5)=30 ลงตัว ⇔ หาร 10 ลงตัว (หลักสุดท้าย 0) และ หาร 3 ลงตัว (ผลรวมหลักเลขหาร 3 ลงตัว) ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv30(string num) { int n = num.length();

  11. ตรวจสอบว่าเลขใหญ่หาร 20 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 20 ลงตัวหรือไม่ กฎ: หาร 20 ลงตัว ⇔ หาร 10 ลงตัว (หลักสุดท้าย 0) และ หลักสิบหาร 2 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv20(string num) { int n = num.length(); if (num[n-1] != 0) return false; int second_last = num[n-

  12. ตรวจสอบว่าเลขใหญ่หาร 25 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 25 ลงตัวหรือไม่ กฎ: 2 หลักสุดท้ายเป็น 00, 25, 50, 75 → หาร 25 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv25(string num) { int n = num.length(); int last_two = (num[n-2]-0)*10 + (num[n-1]-0); return (last_two % 25 == 0);

  13. ตรวจสอบว่าเลขใหญ่หาร 3 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 3 ลงตัวหรือไม่ กฎ: ผลรวมหลักเลขหาร 3 ลงตัว → เลขนั้นหาร 3 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv3(string num) { int n = num.length(); long sum = accumulate(begin(num), end(num), 0) - 0 * n; return (sum % 3 == 0); }

  14. ตรวจสอบว่าเลขใหญ่หาร 5 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 5 ลงตัวหรือไม่ กฎ: หลักสุดท้ายเป็น 0 หรือ 5 → หาร 5 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv5(string num) { int n = num.length(); if (num[n-1] != 5 && num[n-1] != 0) return false; return true; } int main() { stri

  15. ตรวจสอบว่าเลขใหญ่หาร 75 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 75 ลงตัวหรือไม่ กฎ: หาร 75 ลงตัว ⇔ หาร 3 ลงตัว และ หาร 25 ลงตัว - หาร 3: ผลรวมหลักเลขหาร 3 ลงตัว - หาร 25: 2 หลักสุดท้ายหาร 25 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv75(string num) { int n = num.length(); long sum = accu

  16. ตรวจสอบว่าเลขใหญ่หาร 8 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (string) หาร 8 ลงตัวหรือไม่ กฎ: เลขที่เกิดจาก 3 หลักสุดท้าย หาร 8 ลงตัว → เลขนั้นหาร 8 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv8(string num) { int n = num.length(); int last_three = (num[n-3]-0)*100 + (num[n-2]-0)*10 + (num[n-1]-0);

  17. ตรวจสอบว่าเลขใหญ่หาร 9 ลงตัวหรือไม่ ใน C++

    ตรวจสอบเลขใหญ่ (เก็บเป็น string) หาร 9 ลงตัวหรือไม่ กฎ: ผลรวมหลักเลขหาร 9 ลงตัว → เลขนั้นหาร 9 ลงตัว ตัวอย่างโค้ด #include <bits/stdc++.h> using namespace std; bool isDiv3(string num) { int n = num.length(); long sum = accumulate(begin(num), end(num), 0) - 0 * n; return (sum % 9

  18. ตรวจสอบว่าเส้นตรงผ่านจุดกำเนิดหรือไม่ ใน C++

    ตรวจสอบว่าเส้นตรงที่กำหนดโดยจุดปลายสองจุด ผ่านจุดกำเนิด (0,0) หรือไม่ สมการเส้นตรงผ่าน (x₁,y₁) และ (x₂,y₂): y - y₁ = ((y₂-y₁)/(x₂-x₁)) × (x - x₁) แทน x=0, y=0 ได้: x₁(y₂-y₁) = y₁(x₂-x₁) ตัวอย่างโค้ด #include<iostream> using namespace std; bool checkPassOrigin(int x1, int y1, int x2, int y2)

  19. ตรวจสอบว่าเลขสามารถเขียนเป็น 2ˣ + 2ʸ ได้หรือไม่ ใน C++

    0 (ซ้ำ ID 1981) ตัวอย่าง: 10 = 2³ + 2¹ เงื่อนไข: N ต้องเป็นเลขคู่ (เพราะ 2ˣ + 2ʸ = 2 × (2ˣ⁻¹ + 2ʸ⁻¹)) ตัวอย่างโค้ด #include <iostream> using namespace std; bool isSumofTwosPower(int n) { return ((n & 1) == 0); } int main() { int num = 86; if (isSumofTwosPower(num)) cout <<

  20. ตรวจสอบว่าเลขสามารถเขียนเป็นผลรวมของจำนวนติดกันได้หรือไม่ ใน C++

    ตรวจสอบว่าเลข N เป็นผลรวมของจำนวนติดกัน 2 ตัวขึ้นไปได้หรือไม่ ตัวอย่าง: 12 = 3+4+5 ข้อสังเกตสำคัญ: เลขที่เป็นกำลังของ 2 (2ⁿ) ไม่สามารถเขียนเป็นผลรวมจำนวนติดกันได้ เหตุผล: ผลรวมจำนวนติดกัน 2 ตัว = เลขคี่, และ 2ⁿ = 2ⁿ⁻¹ + 2ⁿ⁻¹ วิธีตรวจสอบ: (n & (n-1)) != 0 และ n != 0 → สามารถเขียนได้ ตัวอย่างโค้ด #in

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:74/301  20-คอมพิวเตอร์/Page Goto:1 68 69 70 71 72 73 74 75 76 77 78 79 80