Возникли проблемы с грубым принуждением, алгоритмом решения проблемы польского национального флага?
На столе лежит ряд из n > 1 шашек, некоторые из них красные, а некоторые белые. (Красный и белый-цвета польского национального флага.) Разработайте алгоритм перестановки шашек так, чтобы все красные шашки предшествовали всем белым.Единственными разрешенными операциями являются проверка цвета шашки и замена двух шашек.Постарайтесь свести к минимуму количество свопов, сделанных вашим алгоритмом.
Что я уже пробовал:
Это работает, но мне нужно использовать грубую силу или другой алгоритм.
entry='ccbbbbcbcbcbbcccb' list2=list(entry) print('entrance:'+ entry) for i in range (0,len(entry)): if list2[i]=='c': result=''.join(list2) print( 'checking %s : %s ' % (i+1 ,result)) else: result=''.join(list2) print( 'checking %s : %s ' % (i+1 ,result)) for j in range(i+1,len(entry)): if list2[j]=='c': list2[i],list2[j]=list2[j],list2[i] result=''.join(list2) print('switch '+result) break print('Solution: '+result)
Patrice T
Можете ли вы привести пример ввода и результата, который вам нужен.
klara7
input= 'cccbbcbcb'
результат= 'cccccbbbb'
CHill60
Вам хочется задать актуальный вопрос?
klara7
Мне нужен алгоритм грубой силы для этой задачи
Richard MacCutchan
Просто пройдите по списку, перемещая все пункты b в конец. Очень простой.
klara7
не могу этого сделать, потому что "единственные разрешенные операции-это проверка цвета шашки и замена двух шашек",поэтому я не могу просто переместить их,и это все еще не грубое принуждение
Richard MacCutchan
Итак, найдите первую точку, где две шашки не совпадают,и поменяйте их местами. Затем повторите процесс с этой точки. Все еще довольно просто.