암호 해독 퍼즐을 나타내는 3 개의 문자열을 사용하는 C++ 프로그램을 계획 중입니다. 입력이 오른쪽으로 정렬 것으로 가정하여 예를 들어, 두, 두, 4 주어, 프로그램,C++에서 암호 해독 솔버 만들기
TWO
+ TWO
------
FOUR
에 해당하는 같은 수식하는 각 문자에 자리 대체를 찾을 것입니다. 이것에 관해가는 한 가지 방법은 당연히 무작위로 강제하는 것입니다. 각 문자에 대해 가능한 모든 대체 문자를 중첩 된 루프로 할당하고, 반복하여 합계를 시도하는 등의 작업을 수행 할 것입니다.
내 생각에 이것은 극도로 비효율적이지만 기본 루프 검사는 각 변수의 도메인을 제한하기 위해 일련의 공제가 수행 된 후 실행 가능한 (또는 필요한) 방법 일 수 있습니다. 저는 시각화하기가 다소 어려웠습니다. 그러나 이와 같은 일반/패딩 구조를 가정하는 것이 합리적 일 것입니다. 각 X는 꼭 필요하지 않은 별개의 숫자를 나타내며 각 C는 캐리 숫자입니다.이 경우, 0 또는 1 중 하나임)? : 염두에두고
CCC.....CCC
XXX.....XXXX
+ XXX.....XXXX
----------------
CXXX.....XXXX
는 좀 더 계획의 생각 : 앞에 0 -Though
문제에 주어진되지 않습니다, 나는 아마 곳에 적절한 출력/경기에도 가지 그들을 충분히 추가한다고 피연산자까지
- 각 문자에 대해 0-9의 가능한 값 집합으로 시작해야한다고 생각합니다. 아마도 '도메인'테이블에 벡터로 저장되고 공제액으로 값을 제거해야합니다. 내가 볼 경우 예를 들어, 일부 문자는이
A
C
--
A
처럼 줄 지어, 그 C가 제로 말할 수 이것은 그 도메인에서 다른 값을 제거 할 수 있습니다. 꽤 많은 공제액을 생각할 수 있지만, 모든 종류의 작은 상황에 대해 일반화하고 코드에 넣는 것은 언뜻보기에는 까다로울 수 있습니다.
-Assuming 도메인 테이블에서 많은 것들을 실행하고 많은 값을 부팅하는 추리가 있습니다. 모든 것을 반복하고 상태 공간이 작아서 솔루션을 합리적인 시간 내에 그러나 그것은 그것보다 더해야 할 것처럼 느껴집니다! - 어쩌면 몇 가지 똑똑한 방정식이나 그 선을 따라 뭔가를 설정할 수 있습니다.
팁 감사합니다.
답변이 고유하다고 가정합니까? 예를 들어 누군가가 당신에게'AA + BB = CC'를 주었다면 당신은 모든 해결책을 찾고자 할 것인가? – SirGuy
첫 번째 답변이면 충분합니다. – nicole
C++에 관해 당신의 질문은 무엇입니까? –