หน้าแรก
หน้าแรก
จีซีดี GCD ย่อมาจาก Greatest Common Divisor ของจำนวนเต็มตั้งแต่สองตัวขึ้นไป ยกเว้น 0 เช่น การหาตัวหารร่วมมากของ 48 และ 180 48 =2 × 2 × 2 × 2 × 3 180 =2 × 2 × 3 × 3 × 5 ตัวหารร่วมมากที่สุด =2 × 2 × 3 =12. ในปัญหาที่กำหนด ควรพิมพ์ N บรรทัดด้วยองค์ประกอบที่มี GCD ตามที่ระบุ Input : N=2 GCD=2 Ou
ด้วยตัวเลขสองตัว x และ y ผลลัพธ์ควรมีตัวประกอบร่วมที่ k Input: x=9 y=18 k=1 Output : k common factor = 2 Factors of 9 : 1, 3, 9 Factors of 18 : 1, 2, 3, 6, 9, 18 Greatest Common Factor : 9 อัลกอริทึม START Step 1 -: take input as x and y lets say 3 and 21 and k as 1 Step 2 -: declare start variables
Newman-Conway Sequence ใช้สำหรับสร้างลำดับจำนวนเต็มดังต่อไปนี้ 1 1 2 2 3 4 4 4 5 6 7 7 8 8 8 8 9 10 11 12 สูตรที่ใช้สร้างลำดับนิวแมน-คอนเวย์สำหรับตัวเลข n คือ − P(n) = P(P(n - 1)) + P(n - P(n - 1)) Where, p(1) =p(2) =1 อัลกอริทึม START Step 1 -> Input variable n(e.g. 20) Step 2 -> start varia
ด้วยอาร์เรย์ของสมมุติว่าองค์ประกอบ k โปรแกรมจะต้องค้นหาองค์ประกอบที่เล็กที่สุด n รายการตามลำดับที่ปรากฏ Input : arr[] = {1, 2, 4, 3, 6, 7, 8}, k=3 Ouput : 1, 2, 3 Input k is 3 it means 3 shortest elements among the set needs to be displayed in original order like 1 than 2 and than 3 อัลกอริทึม START
ให้โปรแกรมสมการหาค่า a โดยที่ a+b<=n หารด้วย x ลงตัว อัลกอริทึม START Step 1 -> Declare start variables b=10, x=9, n=40 and flag=0, divisible Step 2 -> Loop For divisible = (b / x + 1 ) * x and divisible <= n and divisible += x IF divisible - b >= 1 Prin
ที่นี่ ตามรูปแบบปัญหาที่กำหนดจะต้องแสดงโดยใช้วิธีการแบบเรียกซ้ำ ฟังก์ชันแบบเรียกซ้ำ คือตัวที่เรียกตัวเองว่า n จำนวนครั้ง สามารถมีฟังก์ชันแบบเรียกซ้ำจำนวน n ในโปรแกรมได้ ปัญหาในการทำงานกับฟังก์ชันแบบเรียกซ้ำคือความซับซ้อน อัลกอริทึม START Step 1 -> function int printpattern(int n) If
ที่นี่เราจะเห็นปัญหาความน่าจะเป็นของเมทริกซ์หนึ่งปัญหา เรามีเมทริกซ์สี่เหลี่ยมหนึ่งอัน เราสามารถย้ายสี่ทิศทางจากเซลล์ปัจจุบันด้วยความน่าจะเป็นเท่ากัน ทิศทั้งสี่นี้ คือ ซ้าย ขวา ขึ้นและลง เราต้องคำนวณความน่าจะเป็นหลังจาก N เคลื่อนจากตำแหน่ง M[i, j] ที่นี่เราจะทำสิ่งที่เกี่ยวข้องกับ DFS เราจะสำรวจแบบ
ในส่วนนี้เราจะเห็นปัญหาหนึ่งที่น่าสนใจ เราจะเห็นรหัสสองส่วน ทั้งสองมีลูปซ้อนกันสองลูป เราต้องระบุว่าอันไหนจะวิ่งเร็วกว่ากัน (เราจะถือว่าคอมไพเลอร์ไม่ได้ปรับโค้ดให้เหมาะสม) ส่วนที่ 1 for(int i = 0; i < 10; i++){ for(int j = 0; j<100; j++){ //code }
ที่นี่เราจะเห็นปัญหาการจัดเรียงอื่นที่ชื่อว่า Pancake sort ปัญหานี้ง่าย เรามีหนึ่งอาร์เรย์ เราต้องจัดเรียงสิ่งนี้ แต่เราสามารถใช้การดำเนินการเดียวที่เรียกว่า rev(arr, i) สิ่งนี้จะย้อนกลับองค์ประกอบของ arr จาก 0 เป็นตำแหน่ง ith แนวคิดนี้เหมือนกับการเรียงลำดับการเลือก เราวางองค์ประกอบสูงสุดซ้ำ ๆ ที่ส
ที่นี่เราจะเห็นปริศนาตัวหนึ่ง สมมติว่ามีโปรแกรมที่ให้มาตามข้างล่างนี้ต้องบอกว่าผลงานออกมาเป็นอย่างไร เพราะอะไร ตัวอย่าง #include<iostream> using namespace std; int main() { int x = 0xab; ~x; cout << hex << x; } แล้วผลงานจะเป็นอย่างไร? ~x กำลั
หนูในปัญหาเขาวงกตเป็นหนึ่งในปัญหาที่รู้จักกันดีของการย้อนรอย ที่นี่เราจะเห็นปัญหาที่มีการเปลี่ยนแปลงเล็กน้อย สมมติว่าได้รับเขาวงกต NxN M หนึ่งอัน จุดเริ่มต้นอยู่ที่มุมซ้ายบน M[0, 0] และปลายทางคือมุมล่างขวา M[N – 1, N - 1] หนูตัวหนึ่งวางอยู่ที่จุดเริ่มต้น เป้าหมายของเราคือหาเส้นทางจากจุดเริ่มต้นไปยัง
3 ค่าจริงหรือ 1 ค่าบ่งชี้ว่าสถานะใช้งานอยู่ และ 0 หรือเท็จระบุว่าไม่ได้ใช้งาน ยังให้เลข k อีกตัวหนึ่ง เราต้องหาเซลล์ที่ใช้งานหรือไม่ทำงานหลังจาก k วัน หลังจากสถานะประจำวันของ ith เซลล์จะเปิดใช้งานหากเซลล์ด้านซ้ายและด้านขวาไม่เหมือนกัน หากเหมือนกัน เซลล์จะไม่ทำงาน เซลล์ด้านซ้ายสุดและด้านขวาสุดไม่มีเซ
ที่นี่เราจะดูวิธีการเพิ่ม 1 ด้วยหมายเลขที่เก็บไว้ในรายการที่เชื่อมโยง ในรายการที่เชื่อมโยง ตัวเลขแต่ละหลักของตัวเลขจะถูกเก็บไว้ หากตัวเลขคือ 512 จะถูกเก็บไว้ดังนี้ - 512 = (5)-->(1)-->(2)-->NULL เรากำลังจัดเตรียมรายการลงในฟังก์ชันการเพิ่มขึ้น ที่จะกลับรายการอื่นหลังจากเพิ่ม 1 กับมัน ที่นี่
ในส่วนนี้เราจะเห็นปัญหาหนึ่งที่น่าสนใจ สมมติว่ามีหนึ่งหมายเลข เราต้องเพิ่มจำนวนนี้ขึ้น 1 นี่เป็นงานที่ง่ายมาก แต่ที่นี่เราจะวางตัวเลขเป็นอาร์เรย์ แต่ละหลักของตัวเลขนั้นจะถูกวางเป็นองค์ประกอบของอาร์เรย์ หากตัวเลขคือ 512 จะถูกเก็บไว้เป็น {5, 1, 2} และเราต้องเพิ่มจำนวนโดยใช้วิธีการแบบเรียกซ้ำ ให้เราดูอ
ที่นี่เราจะเห็นปัญหาหนึ่ง เราจะเพิ่มองค์ประกอบอาร์เรย์สองรายการและเก็บไว้ในอาร์เรย์อื่น แต่เราจะปฏิบัติตามข้อจำกัดบางประการ ข้อจำกัดเหล่านี้มีลักษณะดังต่อไปนี้ - ควรระบุการเพิ่มเติมจากดัชนีที่ 0 ของทั้งสองอาร์เรย์ แบ่งผลรวมหากเป็นตัวเลขมากกว่าหนึ่งหลัก และวางแต่ละหลักในตำแหน่งที่เกี่ยวข้อง ตัวเลขที
ในส่วนนี้เราจะดูว่าอาร์เรย์หนึ่งมีตัวเลข n หรือไม่ เราต้องตรวจสอบว่าเราสร้างตัวเลขโดยใช้องค์ประกอบทั้งหมดของตัวเลขเหล่านี้หรือไม่ ตัวเลขนั้นจะหารด้วย 3 ลงตัวหรือไม่ หากองค์ประกอบอาร์เรย์คือ {15, 24, 23, 13} เราก็สามารถสร้างจำนวนเต็มได้ เช่น 15242313 ซึ่งจะหารด้วย 3 ลงตัว อัลกอริทึม checkDivThree(arr
ที่นี่เราจะมาดูวิธีการคำนวณจำนวน 0 ต่อท้ายสำหรับผลลัพธ์ของแฟคทอเรียลของจำนวนใดๆ ดังนั้นถ้า n =5 แล้ว 5! =120 มี 0 ต่อท้ายเพียงตัวเดียว สำหรับ 20! มันจะเป็นศูนย์ 4 ตัวเท่ากับ 20! =2432902008176640000 วิธีที่ง่ายที่สุดคือการคำนวณแฟคทอเรียลและนับ 0 แต่วิธีนี้ใช้ไม่ได้ผลสำหรับค่า n จำนวนมาก ดังนั้นเราจ
ที่นี่เราจะมาดูวิธีการเพิ่มตัวเลขสองตัวที่จัดเก็บไว้ในรายการที่เชื่อมโยงแยกกัน ในรายการที่เชื่อมโยง ตัวเลขแต่ละหลักของตัวเลขจะถูกเก็บไว้ หากตัวเลขคือ 512 จะถูกเก็บไว้ดังนี้ - 512 = (5)-->(1)-->(2)-->NULL เราจัดเตรียมรายการประเภทนี้ไว้สองรายการ หน้าที่ของเราคือเพิ่มและรับผลลัพธ์หลังจากคำนวณ
เราจะเห็นปัญหาง่ายๆ ประการหนึ่ง เราต้องหาตัวเลขทั้งหมดที่มีลักษณะเป็นพาลินโดรมในรายการที่กำหนด วิธีการนั้นง่าย นำแต่ละหมายเลขจากรายการและตรวจสอบว่าเป็น palindrome หรือไม่ แล้วพิมพ์หมายเลข อัลกอริทึม getAllPalindrome(arr, n) Begin for each element e in arr, do if e i
ที่นี่เราจะเห็นเลขฐานสองที่เป็นไปได้ทั้งหมดของ n บิต (ผู้ใช้กำหนด n) โดยที่ผลรวมของแต่ละครึ่งจะเท่ากัน ตัวอย่างเช่น หากตัวเลขคือ 10001 ที่นี่ 10 และ 01 เหมือนกันเพราะผลรวมเท่ากัน และอยู่ในส่วนต่างๆ ที่ต่างกัน เราจะสร้างตัวเลขประเภทนั้นทั้งหมด อัลกอริทึม genAllBinEqualSumHalf(n, ซ้าย, ขวา, ค่าต่าง)