우선 제목에 명시된 것보다 실제로 많은 제약이 있습니다. PLZ 읽기.사전에서 임의의 순서로 항목을 표시하는 방법 두 개의 인접 항목이 같은 항목이 아닌 방법
은 키가 항목으로 작동하는 dictionary<char,int>
이며, 값은 출력에서 발생 횟수를 의미합니다. (가중치가 있지만 교체가없는 것 같음) 예 : ('A', 2) ('B', 3) ('C', 1)
가능한 출력은 'babcab'
내가 그것을 구현하는 다음과 같은 방법으로 생각하고있을 것이다.
- (누적 가중치, char)을 항목으로 포함하는 새 목록을 작성하십시오.
- 무작위
- 가 축적 된 가중치를 계산 목록에서 항목을 선택, 또한 0
- 반복으로 무게 최근 그려 항목을 설정합니다.
'bacab'이 생성되었지만 더 이상 수행 할 수없는 상황이있을 수 있습니다 ('b'만 남았으나 즉각적인 반복이 허용되지 않으므로 가중치는 0으로 설정 됨). 이 경우 모든 결과가 삭제되고 처음부터 다시 시작됩니다.
다른 유용한 접근 방법이 있습니까?
또한 "해당 가중치를 0으로 설정"프로세스를 건너 뛰면 실행 불가능한 솔루션을 거부합니다. 예 : 벌써 나는 '밥'을 먹었다. 다음 rng 선택에서 'b'를 얻은 다음 'b'가 아닌 무언가를 얻을 때까지 무승부 과정을 다시 실행 한 다음 계속 진행합니다. 이것이 더 잘 수행됩니까?
1. 모든 가능한 순열을 생성합니다. 2. 요구 사항에 맞지 않는 모든 순열을 제거하십시오. 3. 남아있는 순열 중에서 무작위 순열을 선택하십시오. – dtb
그리고 '무작위'는 어떻게되어야합니까? 무작위 승/무작위가 허용 되나요? –
실제로 ('a', 20), ('b', 23), ..., ('j', 34)와 같은 작업을하고 있습니다. 가능한 모든 순열을 생성하는 것이 쉽지 않습니다. – colinfang