Единственный ответ, действительно отвечающий на вопрос, - это вопрос @akash_magoon (и таким простым способом!), но он не возвращает точный объект, указанный в вопросе. Я немного реорганизовал и получил ответ в PHP, возвращающий только то, что задано:
function maximizeProfit(array $dailyPrices)
{
$buyDay = $sellDay = $cheaperDay = $profit = 0;
for ($today = 0; $today < count($dailyPrices); $today++) {
if ($dailyPrices[$today] < $dailyPrices[$cheaperDay]) {
$cheaperDay = $today;
} elseif ($dailyPrices[$today] - $dailyPrices[$cheaperDay] > $profit) {
$buyDay = $cheaperDay;
$sellDay = $today;
$profit = $dailyPrices[$today] - $dailyPrices[$cheaperDay];
}
}
return [$buyDay, $sellDay];
}
Doxygen действительно превосходен для этого, хотя необходимо будет установить GraphViz, чтобы заставить графики тянуть.
, Как только Вам установили все, действительно довольно просто потянуть графики. Удостоверьтесь, что Вы устанавливаете EXTRACT_ALL и CALL_GRAPH к истинному, и необходимо быть хорошими для движения.
полная документация относительно этой функции для doxygen здесь .
Попробуйте вывод в качестве примера doxygen
от Xerces
Мог бы быть дублирование, но проверить ollydbg, IDA Pro и , этот веб-сайт имеет целый набор ресурсов с некоторыми очень сексуальными изображениями.
Я настоятельно рекомендую BOUML . Это бесплатное приложение для моделирования UML, которое:
Итак: импортируйте свой код в BOUML и просмотрите его там или экспортируйте в SVG и просмотрите его в Firefox.
Для бесплатной версии:
Вы можете ознакомиться с различными инструментами для проектирования и моделирования программного обеспечения ( Rational Rose , Sparx Enterprise Architect , Umbrello и т. Д. ). Большинство из них имеют некоторую функциональность для обратного моделирования по исходному коду и получения диаграмм классов UML, а иногда даже диаграмм последовательностей (и это очень близко к графику вызовов функций).
Но после того, как вы получите несколько изображений кода действительно большого проекта Вы могли понять, что такие графики довольно трудны для чтения и понимания. К сожалению, возможности визуализации сложности очень ограничены.
На мой взгляд, использование идиомы «разделяй и властвуй» - более удобный подход. Вы можете извлекать различные функциональные блоки или слои из некоторой базы кода (иногда достаточно просто сортировки cpp-файлов по разным папкам).
Существует старый инструмент под названием CDOC , который мы все еще используем для создания деревьев вызовов.
При использовании Visual Studio выпуск 2010 Ultimate позволяет создавать диаграммы последовательностей и графики зависимостей. Однако в настоящее время версия поддерживает только проекты приложений .NET.
Команда получила большой интерес к поддержке C++ в будущем выпуске, так что, возможно, вы захотите оставаться настроенными. Тем временем вы можете разместить сообщение на форуме VS 2010 Architectural Discovery & Modeling Tools по адресу http://social.msdn.microsoft.com/Forums/en-US/vsarch/threads , чтобы запросить обновление. Я знаю, что команда продуктов любит слышать отзывы клиентов об инструментах.
Тем временем вы можете узнать больше о создании диаграмм последовательности и диаграмм зависимости из кодекса .NET в следующих темах:
, Как к: Найти Кодекс Используя Исследователя Архитектуры : http://msdn.microsoft.com/en-us/library/dd409431%28VS.100%29.aspx
, Как к: Произвести Документы Графика из Кода : http://msdn.microsoft.com/en-us/library/dd409453%28VS.100%29.aspx#SeeSpecificSource
, Как к: Исследовать Кодекс с Диаграммами Последовательности : http://msdn.microsoft.com/en-us/library/ee317485%28VS.100%29.aspx
, Чтобы попробовать ЕМКОСТНО-РЕЗИСТИВНЫЙ выпуск и обеспечить обратную связь, загрузите его в http://www.microsoft.com/downloads/details.aspx? displaylang=en&FamilyID=457bab91-5eb2-4b36-b0f4-d6f34683c62a
В дополнение к написанным выше инструментам, вы можете попробовать understand. Но это не бесплатно.