Đề thi Học sinh giỏi Tin học/3/Lời giải
Lời giải bằng C++
#include <iostream>
using namespace std;
int main() {
int n; cin >> n;
while(n--) {
int key, door[4];
cin >> key >> door[1] >> door[2] >> door[3];
if (door[key] != 0 && door[door[key]] != 0) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
Giải thích
sửa- Biến n: biến lặp sử dụng trong vòng lặp while để chạy nhiều trường hợp
- Biến key: con số ghi trên chìa khóa trong tay bạn ban đầu
- Mảng door: được khai báo tới 4 phần tử (mặc dù chỉ cần 3) để lợi dụng chỉ số mảng viết số thứ tự cửa.
Ý tưởng: muốn mở được cả 3 cánh cửa phải có chìa khóa đằng sau cánh cửa đầu tiên mở được và cánh cửa thứ hai mở được.
Cài đặt: chìa khóa đằng sau cánh cửa đầu tiên mở được là door[key] và sau cánh cửa thứ hai mở được là door[door[key]]. Cả hai giá trị này phải cùng khác 0 thì mới mở được hết cánh cửa, không thì không mở được.