Macro cp_library_rs::in_ex
source · macro_rules! in_ex { ($arr:expr ; $include:expr , $exclude:expr) => { ... }; ($arr:expr ; $in0:expr , $ex0:expr $(; $in_i:expr , $ex_i:expr)+) => { ... }; }
Expand description
高次元配列に対して包除原理を適用する
2次元累積和の実装例
use cp_library_rs::in_ex;
// 3次元累積和
let a = [[1, 2], [3, 4]];
let mut s = [[0; 3]; 3];
for i in 0..2 {
for j in 0..2 {
s[i+1][j+1] = a[i][j] - in_ex!(s; i+1,i; j+1,j);
}
}
assert_eq!(s, [[0, 0, 0], [0, 1, 3], [0, 4, 10]]);