문제

나는 모든 고유 한 순열을 계산하려고 노력했다. 매우 긴 단어 (antidivisesteclishmisharianism), 그리고 단어의 순열을 계산할 수는 있지만 복제 생성을 중지하는 데 문제가 있습니다.

일반적으로 나는 그냥 실행할 것입니다 List<T>.Contains() 내 문자열의 방법이지만 순열 목록이 너무 커서 메모리에 보관할 수 없습니다. 나는 그 실수를 일찍 만들었고 내 컴퓨터에 8GB의 메모리를 모두 사용했습니다. 이를 다시 발생하지 않기 위해 계산 된 순열을 파일에 추가하여 메모리에서 해제하기 위해 코드를 변경했습니다.

내 주요 질문은 이것입니다. 메모리에 모든 것을로드하지 않고 중복 순열이 내 파일에 추가되는 것을 방지하려면 어떻게해야합니까? 예를 들어 처음 몇 메가 바이트를 선택적으로로드하고, 스캔하고, 파일이 완료 될 때까지 계속 이동하거나 다른 방향으로보고 있어야합니까?

이것은 숙제가 아니며, 수학 숙제는 컴퓨터가 초당 30 개의 순열을 계산할 수있는 가상의 상황을 주었고 모든 순열을 계산하는 데 얼마나 걸리는지 알아 냈습니다. 그것은 문제가 아니었고, 나는 그것에 대한 도움이 필요하지 않습니다. 나는 동일한 작업을 수행하는 데 현대 컴퓨터가 얼마나 걸리는지 알고 싶었습니다.

도움이 되었습니까?

해결책

모든 순열을 생성하는 알고리즘을 사용하는 것은 어떻습니까? 없이 복제? 그렇게하면 처음에 그들을 확인할 필요가 없습니다.

"알고리즘 생성 순열"에 대한 Google 검색은 수십 개의 참조를 시작하여 시작합니다. 예를 들어 순열 생성 방법

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top