4回くじを引くという条件から、nパターンの4回分を全通り試して、一致する組み合わせを探している。
全通りを探す場合、ループの中でループをするという書き方が多い。
static MAX_N: usize = 50;
fn main() {
let mut n: i32;
let mut m: i32;
let mut k: Vec<i32> = Vec::new();
println!("紙の枚数 n を入力してください。");
let mut line = String::new();
std::io::stdin().read_line(&mut line).ok();
let n = line.trim().parse::<i32>().unwrap();
println!("期待する数字の和 m を入力してください。");
let mut line = String::new();
std::io::stdin().read_line(&mut line).ok();
let m = line.trim().parse::<i32>().unwrap();
println!("紙に書かれている数字をそれぞれ入力してください。");
for i in 0..n {
println!("{}番目の数字:", i + 1);
let mut line = String::new();
std::io::stdin().read_line(&mut line).ok();
let n = line.trim().parse::<i32>().unwrap();
k.push(n);
}
let mut flg = false;
for a in 0..n {
for b in 0..n {
for c in 0..n {
for d in 0..n {
if k[a as usize] + k[b as usize] + k + k[d as usize] == m {
flg = true;
println!("発見! 組み合わせは{},{},{},{}", k[a as usize], k[b as usize], k, k[d as usize]);
}
}
}
}
}
if !flg {
println!("そのような組み合わせはありません。");
}
}
紙の枚数 n を入力してください。
3
期待する数字の和 m を入力してください。
10
紙に書かれている数字をそれぞれ入力してください。
1番目の数字:
3
2番目の数字:
3
3番目の数字:
2
発見! 組み合わせは3,3,2,2
発見! 組み合わせは3,3,2,2
発見! 組み合わせは3,2,3,2
発見! 組み合わせは3,2,3,2
発見! 組み合わせは3,2,2,3
発見! 組み合わせは3,2,2,3
発見! 組み合わせは3,3,2,2
発見! 組み合わせは3,3,2,2
発見! 組み合わせは3,2,3,2
発見! 組み合わせは3,2,3,2
発見! 組み合わせは3,2,2,3
発見! 組み合わせは3,2,2,3
発見! 組み合わせは2,3,3,2
発見! 組み合わせは2,3,3,2
発見! 組み合わせは2,3,2,3
発見! 組み合わせは2,3,2,3
発見! 組み合わせは2,3,3,2
発見! 組み合わせは2,3,3,2
発見! 組み合わせは2,3,2,3
発見! 組み合わせは2,3,2,3
発見! 組み合わせは2,2,3,3
発見! 組み合わせは2,2,3,3
発見! 組み合わせは2,2,3,3
発見! 組み合わせは2,2,3,3