Có N quân Domino xếp thành một hàng như hình vẽ:
Mỗi quân Domino được chia làm hai phần, phần trên và phần dưới. Trên mặt mỗi phần có từ 1 đến 6 dấu chấm.Ta nhận thấy rằng: Tổng số dấu chấm ở phần trên của N quân Domino bằng: 6+1+1+1=9, tổng số dấu chấm ở phần dưới của N quân Domino bằng 1+5+3+2=11, độ chênh lệch giữa tổng trên và tổng dưới bằng |9-11|=2.
Với mỗi quân, bạn có thể quay 180 độ để phần trên trở thành phần dưới, phần dưới trở thành phần trên, và khi đó độ chênh lệch có thể được thay đổi. Ví dụ như ta quay quân Domino cuối cùng của
hình trên thì độ chênh lệch bằng 0.
Bài toán đặt ra là: Đếm xem có bao nhiêu cách xoay để tổng số chấm phần trên lớn hơn phần dưới đúng bằng K dấu .
Input:
- Dòng đầu chứa hai số nguyên dương N (1≤N≤20) và K (1=K<=100).
- N dòng sau, mỗi dòng hai số ai, bi là số dấu chấm ở phần trên, số dấu chấm ở phần dưới của quân Domino thứ i (1≤ ai, bi ≤6).
Output: Một số duy nhất là đáp án thỏa mãn yêu cầu bài.
Bình luận
code của bài này nha mn
include <iostream>
include <vector>
int countWaysToRotate(const std::vector<std::pair>& dominos, int n, int k, int idx, int diff) {
if (idx == n) {
// Kiểm tra nếu độ chênh lệch bằng k
return (diff == k) ? 1 : 0;
}
}
int main() { int n, k; std::cin >> n >> k;
}