30/09/2018, 18:16
Đề: Nhập vào 1 số n, tìm 3 số a, b, c sao cho thỏa 1 điều kiện nào đó. Thì ngoài thuật toán véc cạn có cách nào tối ưu hơn không ạ?
Chào mọi người, lần đầu em đăng bài nên có gì sơ sót mong mọi người thông cảm
Em có 1 đề bài như sau: Nhập vào 1 số n, tìm 3 số a, b, c sao cho thỏa 1 điều kiện nào đó. Thì ngoài thuật toán véc cạn có cách nào tối ưu hơn không ạ (về bộ nhớ và thời gian thực thi)
void TimSo(int n)
{
bool dung = false;
for (int i = n ; i >= 0; i--) {
if (dung == true) break;
for (int j = n / 2; j >= 0; j--) {
if (dung == true) break;
for (int k = n / 3; k >= 0; k--) {
if ( i + 2 * j + 3 * k == n) {
dung = true;
std::cout << i << " " << j << " " << k << std::endl;
break;
}
}
}
}
}
Hàm của em là tìm a, b, c sao cho a+2b+3c = n và a, b, c lớn nhất có thể(a ưu tiên nhất, rồi tới b, tới c)
Vậy có cách nào tốt ưu hơn không?
Cảm ơn mọi người
Bài liên quan
Dùng 2 vòng for duyệt j,k. i=n-2j-3k kết hợp kt dk
@Gio là sao em chưa hiểu