Bài tập  /  Bài đang cần trả lời

Giải bài có thưởng!

Cho một số nguyên dương n ≤ 30, hãy tìm tất cả các cách phân tích số n thành tổng của các số nguyên dương, các cách phân tích là hoán vị của nhau chỉ tính là một cách

Cho một số nguyên dương n ≤ 30, hãy tìm tất cả các cách phân tích số n thành tổng của các số nguyên dương, các cách phân tích là hoán vị của nhau chỉ tính là một cách.
Cho một số nguyên dương n ≤ 30, hãy tìm tất cả các cách phân tích số n thành tổng của các số nguyên dương, các cách phân tích là hoán vị của nhau chỉ tính là một cách.
(Mk xin code trong c++nha mấy bạn^^)
0 Xem trả lời
Hỏi chi tiết
268
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Dưới đây là code C++ để tìm tất cả các cách phân tích số n thành tổng của các số nguyên dương, các cách phân tích là hoán vị của nhau chỉ tính là một cách:

```cpp
#include
#include

using namespace std;

void findPartitions(int n, vector& partition, int start) {
if (n == 0) {
for (int i = 0; i < partition.size(); i++) {
cout << partition[i] << " ";
}
cout << endl;
return;
}

for (int i = start; i <= n; i++) {
partition.push_back(i);
findPartitions(n - i, partition, i);
partition.pop_back();
}
}

int main() {
int n;
cout << "Nhap so nguyen duong n: ";
cin >> n;

vector partition;
findPartitions(n, partition, 1);

return 0;
}
```

Giải thích code:

- Hàm `findPartitions` được sử dụng để tìm tất cả các cách phân tích số `n` thành tổng của các số nguyên dương, bắt đầu từ số `start`.
- Nếu `n` bằng 0, tức là đã tìm được một cách phân tích, in ra các số trong `partition`.
- Vòng lặp `for` trong hàm `findPartitions` được sử dụng để thử tất cả các số từ `start` đến `n` để thêm vào `partition`.
- Sau đó, gọi đệ quy để tìm các cách phân tích tiếp theo với số còn lại là `n - i`.
- Cuối cùng, loại bỏ số vừa thêm vào `partition` để thử các số khác trong vòng lặp `for`.

Chúng ta chỉ cần nhập số nguyên dương `n` và chương trình sẽ in ra tất cả các cách phân tích số `n` thành tổng của các số nguyên dương.

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×