Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[1282] [질문]알고리즘 관련해서..
김재구 [knis001] 1325 읽음    2002-09-27 01:46
숫자배열에 새로운 숫자(양수)를 추가할 경우, 인접한 세 숫자가 생기지 않을 경우에만 입력하고 싶습니다.

가령 5라는 숫자를 추가하고자할 경우, 기존배열에 4,6 이나 6,7 혹은 3,4라는 숫자가

이미 존재할 경우에는 입력을 포기하고 false를 반환하고, 없을 경우에만 숫자를 추가하고

true를 반환해야합니다.


vector<int> Data;

bool add(int val)
{
        vector<int>::iterator it;
        int diff;
        unsigned char i,Bits=0;
        Bits = 1 << 2;

        for (it=Data.begin();it < Data.end();it++)  {
                diff=val - *it;
                if (abs(diff) <3)
                        Bits|= 1 << diff+2;
        }

        for (i=0x7;i<=0x1c;i<<=1) // 00111 01110 11100
                if ((Bits & i) ==i)
                        return false;

        Data.push_back(val);
        return true;

}


위와같이 대충 구현은 했는데, 아무리 생각해도 꽁수같네요. 좀더 일반적인 해결방법이 있을까요??
경시대회나가는 애들 문제집을 잠깐 봤는데, 열이 팍 올라오는군요.. 요즘 애들 무서워요 -_-;;;;


+ -

관련 글 리스트
1282 [질문]알고리즘 관련해서.. 김재구 1325 2002/09/27
1284     Re:[질문]알고리즘 관련해서.. 김백일 1359 2002/09/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.