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