Bài toán
Cho số nguyên n, in các số chỉ gồm chữ số 0 và 1 (1, 10, 11, 100...) sao cho tổng bằng n.
Ví dụ
Input: 31 → Output: 10 10 10 1 (hoặc 10 10 11) Input: 35 → Output: 10 10 1 1 1 1 11
Thuật toán tham lam
While n > 0:
If n > 20 và n/10 > 0: in "10", n -= 10
Else if n-11 == 0: in "11", n -= 11
Else: in "1", n--
Mã nguồn C
#include <stdio.h>
void findNumbers(int n) {
int a = n;
while (a > 0) {
if (a/10 > 0 && a > 20) {
a -= 10; printf("10 ");
} else if (a - 11 == 0) {
a -= 11; printf("11 ");
} else {
printf("1 "); a--;
}
}
}
int main() {
int N = 35;
findNumbers(N);
return 0;
}
Kết quả
10 10 1 1 1 1 11