Напишите программу, которая использует динамическое программирование для решения следующей проблемы. Найдите точку ближаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Напишите программу, которая использует динамическое программирование для решения следующей проблемы. Найдите точку ближа

Сообщение Anonymous »

Я пытался решить этот вопрос. Нужно это сделать в Python. Вот вопрос: < /p>
Напишите программу, которая использует динамическое программирование для решения следующей задачи. После каждой 3 -й итерации сделайте заданное количество шагов назад в направлениях X и Y. Приходите в точку (x, y), расстояние которого ближе всего к P (используя формулу расстояния). Начните с начала координат (0,0). < /P>
точечный класс
Точечный класс предоставляется для вас. В классе есть два члена данных: < /p>
x - The x-coordinate of a point
y - The y-coordinate of a point
< /code>
Основная программа < /p>
p также определено, и также прочитал координат в x и y координаты (целые числа) для точки P. /> вперед вдоль оси x-оси < /p>
вперед вдоль оси Y < /p>
обратно вдоль обеих оси каждые 3-ю итерацию < /p>
< /li>
определяет динамическое программирование, которое соответствует, и уносят необходимый номер, а также соответствует определяет, и это соответствует определяет, и это соответствует определяет, и это соответствует определяет, и это соответствует определяет, что соответствует определяет, и решает, что соответствует определениям, и решает, что соответствует определениям, и решает, что соответствует определениям, и решает, что соответствует определениям, и решает, что соответствует определениям. п. После каждой итерации вычислите расстояние между точкой P и текущим местоположением, используя функцию расстояния:
d = sqrt ((x_p - x_1)^2 + (y_p - y_1)^2)
Считайте количество итераций. Подсказка: отслеживайте предыдущее место. Точка P, 2-это количество шагов, которые нужно предпринять вдоль оси x, каждая итерация, 3-это количество шагов, которые нужно предпринять по оси Y, а 1-это количество шагов, которые нужно сделать обратно вдоль как оси x, так и y каждую 3-ю итерацию, выход < /p>
point p: (4,5)
gropty. /> Номер итераций: 2 < /p>
< /li>
< /ol>
*Примечание: Количество шагов, которые нужно сделать назад, никогда не превышает количество шагов, сделанных вперед.import math

# Point class
class Point:
def __init__(self):
self.x = 0
self.y = 0

# Main program
# Read in x and y for Point P
p = Point()
p.x = int(input())
p.y = int(input())

# Read in num of steps to be taken in X and Y directions
# Read in num of steps to be taken (backwards) every 3 steps
# Write dynamic programming algorithm
# Output
< /code>
Я пробовал так много вещей и в конечном итоге попытался сделать это, заканчивая его после 30 итераций, но обновляя все числа с наименьшим расстоянием от Point P. Не уверен, почему это неправильно, но это мой код: < /p>
import math

# Point class
class Point:
def __init__(self):
self.x = 0
self.y = 0

# Main program
# Read in x and y for Point P
p = Point()
p.x = int(input())
p.y = int(input())

# Read in num of steps to be taken in X and Y directions
num_x = int(input())
num_y = int(input())
# Read in num of steps to be taken (backwards) every 3 steps
num_back = int(input())
# Write dynamic programming algorithm
curr = Point()
previous = Point()

curr.x += num_x
curr.y += num_y
d1 = math.sqrt((p.x - previous.x)**2 + (p.y - previous.y)**2)
d2 = math.sqrt((p.x - curr.x)**2 + (p.y - curr.y)**2)
count = 1
num_steps = 0
final = Point()
while True:
if count == 30:
break
else:
count += 1
previous.x = curr.x
previous.y = curr.y
if count % 3 == 0:
curr.x -= num_back
curr.y -= num_back
else:
curr.x += num_x
curr.y += num_y
if d2 < d1:
d1 = d2
num_steps = count
final.x = curr.x
final.y = curr.y
d2 = math.sqrt((p.x - curr.x)**2 + (p.y - curr.y)**2)
# Output
print(f'Point P: ({p.x},{p.y})')
print(f"Arrival point: ({final.x},{final.y})")
print(f'Distance between P and arrival: {d1: 6f}')
print(f'Number of iterations: {num_steps}')


Подробнее здесь: https://stackoverflow.com/questions/797 ... problem-fi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»