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

C/C++ Q/A
[2306] Re:[만해] 소스좀 봐주세요
임문환 [mhlim] 1202 읽음    2003-04-08 07:53
참, 머리 아프군요.


#include<iostream>
#include <conio.h>

#pragma hdrstop

void PrintPermutation(int end,int depth,int out[]);
bool IsUsed(int no,int arr[],int cnt);

using namespace std;


void main()
{
int out[4];

for(int i=1 ;i<=3 ;i++)
{
  cout << endl;
  PrintPermutation(i,0,out);
}

cout << endl;
getch();
}


void PrintPermutation(int end,int depth,int out[])
{
if(end==0) return;
if(depth==end)
{
    for(int i=0 ;i<=end ;i++)
    {
     if(!IsUsed(i,out,depth))
     {
      out[depth] = i;
      break;
     }
    }
    for(int i=0 ;i<=depth ;i++) cout << out[i];
    cout << endl;
}

else
{
    for(int i=0 ;i<=end ;i++)
    {
     if(!IsUsed(i,out,depth))
     {
      out[depth]=i;
      PrintPermutation(end,depth+1,out);
     }
    }
}
}

bool IsUsed(int no,int arr[],int cnt)
{
for(int i=0 ;i<cnt ;i++)
{
  if(arr[i]==no) return true;
}
return false;
}



강재호.만해 님이 쓰신 글 :
: 안녕하세요 만해입니다.
:
: 흐흐 여기에다 글을 적는건 오랜만이네요
:
: 방금 동생이 숙제 못한다고 좀 해달라고 되게 징징 그려서
:
: 하나 해줬습니다.
:
: 여동생도 아닌것이 징징 그려 쩝~
:
: 각설 하고요
:
: 내용은
:
: 이런 것인데요
:
: 01
: 10
:
: 012
: 021
: 120
: ...

: 0123
: 0132
: ...
:
: 이런식으로 0으로부터 시작해서 하나씩 증가하는 숫자 열 에서
:
: 01 이면 01을 제외한 01로 이루어 질수 있는 다른 배열을
:
: 012면 012를 제외한 012로 이루어 질수 있는 다른 배열을 쭉 출력 해라는 문제 였는데요
:
: 김백일님의 소스를 참고로 해서 만들었는데
:
: 이상하게 종료가 바로 안되네요
:
: 뭐가 잘못 된건지
:
: 고수님들의 조언 부탁 드립니다.
:
: // Example for random_shuffle()
: #include<cstdlib>
: #include<iostream>
: #pragma hdrstop
: #include<vector>
: #include<iterator>
: #include<algorithm>
: #include<numeric>
: #include<map>
: #include<functional>
:
: using namespace std;
:
: int main() {
:     vector<int> v(3);
:     vector< vector<int> > Vlist;
:
:     iota(v.begin(), v.end(), 0);            // 0 1 2 3 4 5 6 7 8 9 10
:     Vlist.push_back(v);
:     ostream_iterator<int> out(cout, " ");
:     for ( vector<int>::iterator i = v.begin()+1 ; i != v.end() ; )
:       {
:         i++;
:         int nCount = 0;
:         copy(v.begin(), i, out);
:         cout << endl << endl;
:
:         for ( ;nCount != (((*i-1)*2)-1) ; )
:           {
:             vector<int> temp;
:             random_shuffle(v.begin(), i);
:             temp.assign(v.begin(),i);
:             vector< vector<int> >::iterator position;
:             position = find(Vlist.begin(),Vlist.end(),temp);
:
:             if  ( position == Vlist.end())
:             {// 같은 값이 존재 하지 않으면
:               nCount ++;
:               copy(v.begin(), i, out);
:               cout << endl;
:               Vlist.insert(Vlist.begin(), temp);
:             }
:             iota(v.begin(), i, 0);
:           }
:         cout << endl << endl;
:         Vlist.clear();
:       }
:     return 0;
: }
:
:
: 프로그램 수행이 끝나면 도스창이 자동으로 닫혀야 하는데 안 닫히면서
:
: 시퓨 사용량은 100이네요
:
: 혹시 어디 무한 루프 돈건 아닌가 싶어서 다시 트레이스 해봤는데
:
: 그런건 없는데 어디서 망가진건지 모르겠네요
:
: 고수님들의 도움 바랍니다.
:

+ -

관련 글 리스트
3960         Re:Re: 그 소스는 이것과는 상관이 없습니다. 강재호.만해 1284 2003/04/08
2306     Re:[만해] 소스좀 봐주세요 임문환 1202 2003/04/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.