28/02/2024
Làm sao để có câu trả lời hay nhất?
28/02/2024
28/02/2024
Python
def bfs(n, target):
"""
Tìm số lần biến đổi ít nhất để thu được số target.
Args:
n: Số bắt đầu (1).
target: Số mục tiêu.
Returns:
Số lần biến đổi ít nhất.
"""
queue = [n]
visited = set()
visited.add(n)
count = 0
while queue:
x = queue.pop(0)
count += 1
if x == target:
return count
for y in [x + 1, int(str(x)[::-1])]:
if y not in visited:
visited.add(y)
queue.append(y)
return -1
def main():
t = int(input())
for i in range(t):
n = int(input())
result = bfs(1, n)
print(result)
if __name__ == "__main__":
main()
Use code with caution.
Mã C++:
C++
#include <iostream>
#include <queue>
#include <set>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
queue<int> q;
set<int> visited;
visited.insert(n);
q.push(n);
int count = 0;
while (!q.empty()) {
int x = q.front();
q.pop();
count++;
if (x == n) {
cout << count << endl;
break;
}
for (int y : {x + 1, stoi(to_string(x).substr(0, 1) + to_string(x).substr(2, 1) + to_string(x).substr(1, 1))}) {
if (visited.find(y) == visited
Nếu bạn muốn hỏi bài tập
Các câu hỏi của bạn luôn được giải đáp dưới 10 phút
CÂU HỎI LIÊN QUAN
Top thành viên trả lời