広義今日なので
- dpとかで、vig内グローバルに配列を置いてそれを参照することは可能か?→難しい。よく分からない状態で初期化するのは
static mut
になってunsafeへの道。解決策としては、structでpubにしておいて外部からアクセスできるようにする。その状態でstruct初期化を行い、それに応じた関数をself
で呼び出す。もっといいやり方がありそう。 - あと、配列はプリミティブで所有権とかあまり気にしなくてよいので、Vecより配列を積極的に使っていく。(一度にとるときに向いてそう、要素が動的に追加される場合はVecがいいかも)
mod vig {
pub struct A {
pub dp: [u64; 5],
}
impl A {
fn new() -> Self {
A { dp: [0; 5] }
}
pub fn ret(&self, n: usize) -> u64 {
self.dp[n]
}
}
pub fn retall(n: usize) -> u64 {
let a = A::new();
a.ret(n)
}
}
fn main() {
let case1 = vig::retall(0);
println!("{}", case1); // 0
let a2 = vig::A {
dp: [1337, 0, 0, 0, 0],
};
println!("{}", case1); // 0
let case2 = vig::retall(0);
println!("{}", case2); // 0
println!("{}", a2.ret(0)); // 1337 initialized by a2
}
- stack, queueの使い方(Vec, Deque)
push/popがわかっていればOK
- dfsの使い方
配列もパラメータもすべて渡す形で書いてるけどもう少しきれいにできないかな…無限に引数が増えてしまう
- ありほん進める
- ありほん以外もできれば進める