【第三回アルゴリズム勉強会 Rust Python】全探索と二分探索🔭🔭🔭
今回は3週目の勉強会。アルゴリズムを勉強する。
全探索について
Bit全探索について
二分探索について
勉強することになった。
次回は深さ優先探索・幅優先探索や素数判定やエイトクイーンなどをやろうと思っている。
前回👈👈👈
全探索について
参考
問題を解く (AtCoder)💪💪💪
Rust
use proconio::input;
fn main() {
input! {
n: i32,
}
for i in 1..=9 {
for j in 1..=9 {
if i * j == n {
println!("Yes");
return;
}
}
}
println!("No");
}
Python
def solve(n: int):
for i in range(1, 10):
for j in range(1, 10):
if i*j == n:
print('Yes')
return
print('No')
n = int(input())
solve(n)
Bit全探索について
参考
二分探索について
参考
問題を解く (AtCoder) 💪💪💪
Rust
fn main() {
let mut nk = String::new();
std::io::stdin().read_line(&mut nk).unwrap();
let nk_vec: Vec<i32> = nk
.split_whitespace()
.map(|v| v.parse::<i32>().unwrap())
.collect();
let mut line = String::new();
std::io::stdin().read_line(&mut line).unwrap();
let vec: Vec<i32> = line
.split_whitespace()
.map(|str| str.parse::<i32>().unwrap())
.collect();
binary_search(&vec, *nk_vec.get(1).unwrap());
}
fn binary_search(a: &Vec<i32>, v: i32) {
let mut left: usize = 0;
let mut right: usize = a.len();
while right - left > 1 {
let mid = (right + left) / 2;
if *a.get(mid).unwrap() >= v {
right = mid;
continue;
}
left = mid;
}
println!(
"{}",
if right != a.len() {
right.to_string()
} else {
"-1".to_string()
}
);
}
この記事が気に入ったらサポートをしてみませんか?