Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาจำนวนวิธีในการจับคู่ผู้คนโดยใช้ C++


ในการแก้ปัญหาที่ n − จำนวนคนที่ตอนนี้แต่ละคนสามารถเป็นโสดหรืออยู่เป็นคู่ได้ เราจำเป็นต้องค้นหาจำนวนวิธีทั้งหมดที่สามารถจับคู่คนเหล่านี้ได้

Input : 3

Output: 4

Explanation : [ {1}, {2}, {3},], [{1, 2}, {3}], [{1}, {2, 3}], [{1, 3}, {2}] these four ways are the only ways we can pa up these 3 people.

Input : 6

Output : 76

แนวทางในการหาแนวทางแก้ไข

ในแนวทางนี้ เราจะใช้สูตรของ Young Tableau เพื่อคำนวณปัญหานี้และสูตรที่เราจะใช้คือ -

A[n] = A[n-1] + (n-1) * A[n-2]

ตัวอย่าง

รหัส C++ สำหรับแนวทางข้างต้น

#include <bits/stdc++.h>
using namespace std;
int Young_Tableau(int n){
    int A[n + 1];// To store the answer.
    A[1] = 1; // initial values
    A[2] = 2; // initial values
    for (int i = 3; i <= n; i++) { // using the formula of "Young Tableau" to calculate our answer
        A[i] = A[i - 1] + (i - 1) * A[i - 2];
    }
    return A[n]; // returning the answer
}
int main(){
    int n = 6;
    cout << Young_Tableau(n);
    return 0;
}

ผลลัพธ์

76

คำอธิบายของโค้ดด้านบน

ในแนวทางข้างต้น เราเพียงแค่ใช้สูตรสำหรับ Young Tableau ที่เราต้องหา สองตัวเลขก่อนหน้า ตอนนี้เราสามารถเก็บตัวเลขเหล่านี้ไว้ในดัชนีอาร์เรย์ได้ การสมัครรับข้อมูลทำให้เราได้ค่าสำหรับสูตรของเรา และด้วยเหตุนี้เราจึงคำนวณคำตอบของเรา

บทสรุป

ในบทช่วยสอนนี้ เราจะแก้ปัญหาเพื่อค้นหาวิธีจับคู่ผู้คนหลายวิธี นอกจากนี้เรายังได้เรียนรู้โปรแกรม C++ สำหรับปัญหานี้และแนวทางที่สมบูรณ์ (ปกติ) ซึ่งเราแก้ไขปัญหานี้ เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์