Tôi đã cố gắng giải quyết một câu hỏi thực hành trên SPOJ https://www.spoj.pl/problems/DIEHARD/. Tuy nhiên cả hai cách tiếp cận tham lam của tôi dẫn đến câu trả lời sai và đệ quy quá chậm đối với trường hợp xấu nhất. Có ai biết cách tiếp cận vấn đề này không? Tôi đang tìm ai đó để chỉ cho tôi đi đúng hướng.Cách tiếp cận chính xác để giải quyết SPOJ DIEHARD là gì?
Trò chơi rất đơn giản. Ban đầu, bạn có số lượng sức khỏe 'H' và lượng áo giáp 'A'. Bất cứ lúc nào bạn có thể sống ở bất kỳ nơi nào trong ba nơi - lửa, nước và không khí. Sau mỗi lần đơn vị, bạn phải thay đổi nơi ở của mình. Ví dụ nếu bạn hiện đang sống trong lửa, bạn có thể bước vào nước hoặc không khí.
- Nếu bạn bước vào không khí, bạn tăng sức khỏe của 3 và áo giáp của bạn tăng 2
- Nếu bạn bước vào nước, giảm sức khỏe của bạn bằng 5 và áo giáp của bạn giảm 10
Nếu bạn bước vào lửa , giảm sức khỏe của bạn bằng 20 và áo giáp của bạn tăng 5Nếu sức khỏe hoặc áo giáp của bạn trở nên < = 0, bạn sẽ chết ngay lập tức
Tìm thời gian tối đa mà bạn có thể sống sót.
Nhập:
Dòng đầu tiên bao gồm số nguyên t, số lượng trường hợp thử nghiệm. Đối với mỗi trường hợp thử nghiệm sẽ có hai số nguyên dương đại diện cho H sức khỏe ban đầu và ban đầu giáp A.
Output:
Đối với mỗi trường hợp thử nghiệm tìm ra thời gian tối đa mà bạn có thể sống sót.
đầu vào tối đa của H và A là gì? –
"Ràng buộc đầu vào: 1 <= t <= 10 1 <= H, A <= 1000 " –
Bạn đã thử giải pháp tham lam chưa? Đi vào không khí bất cứ khi nào có thể bởi vì điều đó làm tăng mọi thứ, nếu không áo giáp> sức khỏe đi đến nước khác nếu nó không giết bạn đi lửa. – IVlad