Тест C ++ для проверки согласованности оператора равенства со структурой с течением времени

Я думаю, что необходимо описать настоящую проблему позади этого. Я говорю это, потому что Вы просите что-то у эффективного времени, все же набор ответа к проблеме, кажется, растет экспоненциально!

Поэтому я не ожидал бы лучший алгоритм, чем что-то экспоненциальное.

я сделал бы отслеживание в обратном порядке и прохождение через целого графика. Для предотвращения циклов сохраните все посещаемые узлы по пути. Когда Вы возвращаетесь, снимаете выделение с узла.

Используя рекурсию:

static bool[] visited;//all false
Stack<int> currentway; initialize empty

function findnodes(int nextnode)
{
if (nextnode==destnode)
{
  print currentway 
  return;
}
visited[nextnode]=true;
Push nextnode to the end of currentway.
for each node n accesible from nextnode:
  findnodes(n);
visited[nextnode]=false; 
pop from currenteay
}

Или та несправедливость?

редактирование: О, и я забыл: необходимо устранить рекурсивные вызовы путем использования той стопки узла

11
задан kelvinfix 2 May 2011 в 06:03
поделиться

1 ответ

Иногда Вы хотите возвратить другую информацию от ул. функция, но Хотеть показать некоторую другую информацию в выпадающем из администратора. Затем Вышеупомянутое решение не будет работать.

можно сделать это путем разделения на подклассы форм. ModelChoiceField как это.

class TestChoiceField(forms.ModelChoiceField):
 def label_from_instance(self, obj):
     return "Test: {}".format(obj.id)

можно затем переопределить formfield_for_foreignkey

def formfield_for_foreignkey(self, db_field, request, **kwargs):
  if db_field.name == 'test':
    return TestChoiceField(queryset=Test.objects.all())
  return super().formfield_for_foreignkey(db_field, request, **kwargs)
0
ответ дан 3 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

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