Khi cài đặt quy hoạch động, hay đếm phân phối, ... chúng ta rất cần sử dụng mảng có chỉ số âm. Nhưng C, C++ lại quy định mảng bắt đầu từ chỉ số 0.
Để khắc phục hạn chế này, mình xin đưa ra một ý tưởng như sau:
Ta viết một macro, để "tịnh tiến" chỉ số của mạng, ví dụ:
#define d(i) d[i+100]
int d[200];
Tương đương với d:array[-100..100] of longint; trong Pascal
Khi gọi phần tử thứ i của mạng, ta sử dụng d(i) thay vì d[i]
Tags:
Không có nhận xét nào:
Đăng nhận xét