Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Cho 2 số ~N, K~. Yêu cầu liệt kê tất cả các chuỗi nhị phân có độ dài ~N~ theo thứ tự từ nhỏ đến lớn, mỗi xâu ký tự gồm có đúng ~K~ bit ~1~ liên tiếp. Ví dụ: ~0110~ có 2 bit ~1~ liên tiếp, ~0101~ chỉ có 1 bit ~1~ liên tiếp.
Input
- Gồm 1 dòng chứa 2 số nguyên ~N, K~ được phân tách nhau bỏi dấu cách ~(1 \leq N \leq 20, 1 \leq K \leq N)~.
Output
- Gồm nhiều dòng, mỗi dòng chứa 1 xâu nhị phân thoả mãn điều kiện đề bài.
Sample
Input #1
5 3
Output #1
00111
01110
10111
11100
11101
Bình luận
My solution:
Code:
ai fix giup em voi em thay dung het ma :((
include <bits/stdc++.h>
using namespace std;
int n, a[100000], k; int sum = 0;
void in() { for (int i = 1; i <= n; i++) { cout << a[i]; } cout << endl; }
void Try(int i) { for (int j = 0; j <= 1; j++) { a[i] = j; sum += a[i]; if (i == n && sum == k) { in(); } else if (i < n) { Try(i + 1); } sum -= a[i]; } }
int main() { iosbase::syncwith_stdio(false); cin.tie(NULL); cin >> n >> k; Try(1); return 0; }
My solution: