Алгоритм, чтобы найти, какое число в списке сумма до определенного числа

У меня есть список номеров. У меня тоже есть определенная сумма. Сумма составлена ​​из нескольких чисел из моего списка (я могу / не могу знать, из скольких чисел она сделана). Существует ли быстрый алгоритм получения списка возможных номеров? Написано на Python было бы здорово, но псевдокод тоже хорош. (Я пока не могу прочитать ничего, кроме Python: P)

Пример

list = [1,2,3,10]
sum = 12
result = [2,10]

ПРИМЕЧАНИЕ:

Есть ли какой-нибудь простой способ увеличения и уменьшения холста (JavaScript)? В основном у меня есть холст размером 400x400 пикселей, и я хотел бы иметь возможность увеличить масштаб с помощью «mousedown» (2x) и вернуться назад с помощью «mouseup».

Потратил последние два дня на поиск в Google, но пока не повезло. : (

48
задан mdml 16 June 2019 в 17:00
поделиться

3 ответа

Основываясь на предложении об использовании drawImage, вы также можете объединить это с функцией масштабирования.

Поэтому, прежде чем рисовать изображение, масштабируйте контекст до желаемого уровня масштабирования:

ctx.scale(2, 2) // Doubles size of anything draw to canvas.

Я создал здесь небольшой пример http://jsfiddle.net/mBzVR/4/ , в котором используется drawImage и масштабирование, чтобы увеличивать масштаб при уменьшении и уменьшении масштаба при перемещении мыши.

58
ответ дан 26 November 2019 в 18:50
поделиться

Если у вас есть исходное изображение или элемент холста и холст размером 400x400, который вы хотите нарисовать, вы можете использовать метод drawImage для достижения масштабирования.

Так, например, полное представление может выглядеть следующим образом

ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);

А увеличенное представление может выглядеть следующим образом

ctx.drawImage(img, img.width / 4, img.height / 4, img.width / 2, img.height / 2, 0, 0, canvas.width, canvas.height);

Первым параметром для drawImage является элемент изображения или элемент холста для рисования, следующие 4 — это x, y, ширина и высота для выборки из источника, а последние 4 параметра — это x, y, ширина и высота области для рисования на холсте. Затем он будет обрабатывать масштабирование за вас.

Вам просто нужно будет выбрать ширину и высоту для исходного образца на основе уровня масштабирования и x и y в зависимости от того, где нажата мышь минус половина расчетной ширины и высоты (но вам нужно будет убедиться, что прямоугольник не выходит за рамки).

4
ответ дан 26 November 2019 в 18:50
поделиться

IIRC Canvas - это растровое изображение в стиле растра. его нельзя будет масштабировать, потому что нет сохраненной информации для увеличения.

Лучше всего хранить в памяти две копии (увеличенную и не увеличенную) и менять их местами при щелчке мышью.

6
ответ дан 26 November 2019 в 18:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: