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

Gió viết 20:23 ngày 30/09/2018

Dùng 2 vòng for duyệt j,k. i=n-2j-3k kết hợp kt dk

Bảo Lộc Đinh viết 20:18 ngày 30/09/2018

@Gio là sao em chưa hiểu

Bài liên quan
0