inthugs(conststring&members,conststring&fans){intN=members.size(),M=fans.size();vector<int>A(N),B(M);for(inti=0;i<N;++i)A[i]=(members[i]=='M');for(inti=0;i<M;++i)B[M-i-1]=(fans[i]=='M');//karatsuba 알고리즘에서 자리 올림은 생략한다.vector<int>C=karatsuba(A,B);intallHugs=0;for(inti=N-1;i<M;++i)if(C[i]==0)++allHugs;returnallHugs;}
위는 알고리즘 문제해결전략 교재 205p 코드 7.9 입니다. 여기서 궁금한점은 왜 members는 그대로 순서대로 A벡터에 저장하고 fans는 B벡터에 역순으로 저장하냐는 것입니다. 책에서 구현한 카라츠바 알고리즘 조건은 역순으로 저장하는 것이었는데 members를 역순으로 하지 않는 이유를 알고 싶습니다. A를 역순으로 바꿔서 실행시켜보니 이상한 결과가 나왔고 그 이유를 디버깅을 통해 알아보고자 했으나 과정이 복잡해 찾지못하고 질문드립니다.
//karatsuba 알고리즘에서 자리 올림은 생략한다. 부분은 multiply 함수의 normalize 함수 호출부분을 삭제하면 되는 건가요?
yoon3784
위는 알고리즘 문제해결전략 교재 205p 코드 7.9 입니다. 여기서 궁금한점은 왜 members는 그대로 순서대로 A벡터에 저장하고 fans는 B벡터에 역순으로 저장하냐는 것입니다. 책에서 구현한 카라츠바 알고리즘 조건은 역순으로 저장하는 것이었는데 members를 역순으로 하지 않는 이유를 알고 싶습니다. A를 역순으로 바꿔서 실행시켜보니 이상한 결과가 나왔고 그 이유를 디버깅을 통해 알아보고자 했으나 과정이 복잡해 찾지못하고 질문드립니다.
//karatsuba 알고리즘에서 자리 올림은 생략한다. 부분은 multiply 함수의 normalize 함수 호출부분을 삭제하면 되는 건가요?
multiply 교재 코드 7.3
7년 전