Test tuy không phải là phương pháp để chứng minh tính đúng đắn của chương trình, nhưng vẫn được sử dụng rộng rãi để phát hiện lỗi sai và tăng độ tin cậy. Có nhiều phương pháp hiệu chỉnh chương trình, nhưng nội dung chủ yếu vẫn dựa trên cơ sở chọn các bộ tests để đi vào các nhánh khác nhau của chương trình.
Cho mô tả chương trình dưới dạng các dòng lệnh. Các lệnh tuyến tính được ký hiệu là S, lệnh rẽ nhánh không đầy đủ được xác định bởi 2 câu lệnh IF và ENDIF, lệnh rẽ nhánh đầy đủ được xác định bởi 3 câu lệnh IF, ELSE, và ENDIF. Điều kiện sau IF được bỏ qua trong mô tả. Chương trình kết thúc bằng lệnh ENDPROGRAM.
Yêu cầu: xác định số lượng tests cần thiết để kiểm tra tất cả các nhánh của chương trình.
Input
Gồm nhiều dòng, mô tả một chương trình theo định dạng đã nêu.
Output
Gồm 1 dòng duy nhất, chứa số lượng tests cần thiết để kiểm tra tất cả các nhánh của chương trình.
Sample Input 1
S
IF
S
S
ELSE
IF
IF
S
ELSE
S
END_IF
S
ELSE
S
END_IF
END_IF
S
ENDPROGRAM
Sample Output 1
4
Sample Input 2
S
IF
END_IF
ENDPROGRAM
Sample Output 2
2
Sample Input 3
S
S
ENDPROGRAM
Sample Output 3
1
Note
Kết quả không vượt quá ~2^{31} - 1~
Comments