나누기는 a/b
형식의 표현입니다. 여기서 a와 b는 그 자체로 숫자, 변수 또는 표현식이 될 수 있습니다. a
은 "배당금"이고, b
은 "약수"입니다. 표현식에 모든 제수를 출력하려고합니다.
이 키는 표현식이 실제로 이진 트리 구조임을 인식하는 것입니다. 트리의 노드는 두 개의 하위 표현식을 결합하는 기호입니다. 나뭇잎 (자손이없는 노드)은 변수 또는 숫자입니다. 여기에 귀하의 표현에 대한 예는 다음과 같습니다
상단 작업은 지난 일어나는 부문이다. 왼쪽에는 x + 2
이 있는데, 두 개의 리프 노드 (x 및 2)와 + 조작이 결합되어 있습니다. 오른쪽에는 하위 표현식 (1 + 1/(x - 2))이 있습니다. 마지막 부분은 까다 롭습니다. 왼쪽에서 오른쪽으로 연산자를 보면, (1 + 1)/(x - 2)로 오해 할 수 있습니다. 그러나 연산자 우선 순위를 고려해야하기 때문에 실제로 1 + (1/(x - 2))입니다.
그런 다음해야 할 일은 괄호와 연산자 우선 순위를 고려하여 메모리에 트리를 만드는 파서를 만드는 것입니다. 모든 약수를 원한다면 트리의 모든 노드를 통과 할 수 있으며 분할 노드라면 오른쪽 자식의 표현을 요청할 수 있습니다. 괄호를 다시 채워 넣거나 파싱하는 동안 문자열의 일부를 캐싱하고 해당 부분을 노드에 연결할 수 있습니다.
이것은 기성 코드를 제공하는 답변이 아니지만 주석에 명시된 바와 같이 스택 오버플로가 아닙니다. 매우 구체적인 질문이있는 경우 코드를 제공 할 수 있지만 이와 같은 더 큰 문제는 "방법"을 설명하고 실제 구현을 그대로 남겨 두는 것이 더 바람직합니다. 어쨌든 그것은 당신의 직업, 숙제 또는 취미이기 때문입니다.
지금까지 해보신 것은 무엇입니까? –
'모든 칸막이가있을 줄 '을 뽑을 수 있습니까? –
질문을 좀 더 명확하게 편집 할 수 있습니까 – Hema