E
의 알파벳 배열 a1,a2,...aN
이 있습니다. |N| >> |E|
이라고 가정합니다.우선 순위 함수/알파벳 순서의 극단을 찾으십시오.
알파벳의 각 기호에 대해 고유 한 정수 우선 순위 = V(sym)
을 정의합니다. 단순화를 위해 V{i} := V(symbol(ai))
을 정의합시다.
가 어떻게에 대한 우선 순위 기능 V 찾을 수 있습니다 I는 알파벳의 우선 순위/순열을 찾을 필요, 즉
Count(i)->MAX | V{i} < V{i+1}
을하는 조건 V{i}<V{i+1}
을 만족 위치 i
의 수, 최대 값입니다.
편집 1 :주의 깊게 읽으십시오. 배열 ai
이 주어졌으며 작업은 V
함수를 생성하는 것입니다. 우선 순위 함수로 입력 배열을 정렬하는 것에 대해서는 이 아니라입니다.
편집-2 : 예
E = {a,b,c}; A = 'abcab$';
(여기 $, V는 {$}은 = + 무한대 인공 종료 기호 =) 최적의 우선 순위 기능의
하나는 : V{a}=1,V{b}=2,V{c}=3
, 미를 준다 배열 요소 사이의 부호 뒤에는 a<b<c>a<b<$
이 표시되어 4 '<'의 합계가 5가됩니다.
당신은 표준이 아닌 비교 기능을 정렬 의미? –
나는 사용자 우선 순위 기능으로 알파벳을 정렬하는 측면에서이 문제를 보지 않았다. 근처에 두 개의 우선 순위 값을 교환 할 때 다른 모든 우선 순위는 그대로 있으므로 문제 (정렬)의 측면이 적절하다고 생각합니다. – kvark
알파벳이 {a, b, c}이고 시퀀스가 (a, b, c, b, a) 인 경우 두 개의 최적해 함수는 V = {a => 1, b => 2, c => 3}이고 V = {a => 3, b => 2, c => 1}. Count (i)의 최대 값은 | E | -1입니다. 옳은? – xan