M, N = 6, 5
route = [[0 for i in range(N + 1)]for j in range(M + 1)]
print(route)
$ python3 test.py
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
↓
fn main() {
let M = 6;
let N = 5;
let mut route: Vec<Vec<usize>> = Vec::new();
for _ in 0..(M+1) {
let mut L: Vec<usize> = Vec::new();
for _ in 0..(N+1) {
L.push(0);
}
route.push(L);
}
println!("{:?}", route);
}
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
fn main() {
let M = 6;
let N = 5;
let mut route: Vec<Vec<usize>> = Vec::new();
for _ in 0..(M+1) {
let mut L: Vec<usize> = Vec::new();
for _ in 0..(N+1) {
L.push(0);
}
route.push(L);
}
for i in 0..(M+1){
route[i][0] = 1;
}
for i in 1..(N+1) {
route[0][i] = 1;
for j in 1..(M+1) {
route[j][i] = route[j - 1][i] + route[j][i - 1];
}
}
println!("{:?}", route);
}
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.24s
Running `target/debug/rust`
[[1, 1, 1, 1, 1, 1], [1, 2, 3, 4, 5, 6], [1, 3, 6, 10, 15, 21], [1, 4, 10, 20, 35, 56], [1, 5, 15, 35, 70, 126], [1, 6, 21, 56, 126, 252], [1, 7, 28, 84, 210, 462]]
おおお、なるほど、これは凄い。
実はこう書ける
fn search(m: usize, n: usize) -> usize {
if (m == 0) || (n == 0) {
return 1
}
return search(m-1, n) + search(m, n - 1);
}
fn main() {
let M = 6;
let N = 5;
println!("{}", search(M, N));
}
なるほど、これは凄い。
経路の問題も基本は、位置を数字で表現するのね。