Мне удалось получить сумму из двух квадратов, но она все еще не работает, если, например, 10: мне нужно 9 и 1 ... Моя идея - скрыть все предыдущие квадраты и узнать сколько будет добавлено до ввода, (max = 4) ... но im застревает, когда возникают дубликаты, и когда мне нужно добавить 3 вещи ... Для 4 вещей я думаю о просто добавлении выражения else. Любые идеи/предложения о том, как я могу улучшить свой алгоритм?Сумма двух квадратов в C
ответ
Предположим, что вы не должны использовать сложный алгоритм, я предлагаю вам просмотреть все параметры и проверить, составляет ли сумма квадратов нужный вам номер. При вычислении вы также можете сохранить числа в глобальном массиве, чтобы упростить getsquare
Редактировать: так как это хорошая проблема, я написал код. (ВНИМАНИЕ: я не проверял)
int root[4];
int isqrt(int i) {return (int)floor(sqrt((double)i));}
// check if n is sum of s squares. assume s<=4
int canbesum(int s,int n) {
if (s==0) return n==0;
int i;
for (i=isqrt(n);i;i--)
if (canbesum(s-1,n-i*i)) {
root[s-1]=i;
return 1;
}
return 0;
}
int sumofsquares (int x) {
int i;
for (i=0;i<=4;i++) if (canbesum(i,x)) return i;
}
+1 Динамическое программирование. – collinjsimpson
Вы, как будто пытаетесь обмануть всех. Вы можете взглянуть на это: http://www.kernel.org/doc/Documentation/CodingStyle –
Это 'для ... если' мне кажется ясным, но я исправлю это. (Если вы хотели что-то еще, скажите, пожалуйста) – asaelr
- 1. Сумма разложения двух квадратов подсчета
- 2. Сумма квадратов в Clojure
- 3. Сумма квадратов в Lisp
- 4. сумма квадратов целых чисел
- 5. Сумма квадратов домашней работы
- 6. Сумма квадратов элементов списка
- 7. сумма квадратов матриц
- 8. Сумма квадратов разностей
- 9. Python Сумма квадратов Функция
- 10. Эффективно вычисляемая сумма квадратов разностей
- 11. Очень высокая остаточная сумма квадратов
- 12. сумма квадратов или всего квадрата?
- 13. R в группе сумма квадратов kmeans
- 14. Итерация суммы двух квадратов
- 15. Сумма квадратов в массиве с использованием функции
- 16. Сумма квадратов цифр целого числа в Java
- 17. Сумма квадратов по спискам в Perl
- 18. Отношение двух квадратов
- 19. сумма квадратов макс 2 3 SICP упражнения
- 20. Сумма квадратов с использованием лямбда-функций
- 21. Сумма в C, из двух цифр
- 22. Найти минимальную стоимость расчета Сумма квадратов
- 23. Сумма первых квадратов n номеров Javascript
- 24. Python Домашнее задание - сумма совершенных квадратов
- 25. Как работает сумма квадратов разностного алгоритма?
- 26. Проверьте, является ли число суммой двух квадратов в C
- 27. Сумма двух чисел в MIPS
- 28. Сумма двух символов
- 29. Число, которое является квадратом или может быть записано как сумма двух квадратов python
- 30. Обратная сумма двух матриц
Может быть, попытаться найти ответ, используя 1 квадрат, а затем 2 квадрата, затем 3 квадрата и т.д. Это гарантирует, что вы всегда будете иметь наименьшее количество квадратов, используемых. Более элегантные и эффективные решения существуют, но это то, что я представляю себе с головы. – collinjsimpson
Я бы особо отметил, что в другом случае, если вы только проверите случаи 2 * prevoussquare (2 * 9 в примере) и previoussqu + refrev sq (9 + 4) - вы должны проверить ВСЕ суммы всех квадратов. – bdecaf