DRAGON VILLAGE

  • 스토어

  • 틱톡

  • 플러스친구

  • 유튜브

  • 인스타그램

자유게시판

  • 드래곤빌리지
  • 커뮤니티 > 자유게시판

유저 프로필 사진

데락 조합 기계 만드는중입니다

52 달빛속특길장 아르고
  • 조회수261
  • 작성일2022.02.19

매번 메모장에 써가면서 하기도 귀찮고 해서 만들어 보고 있는데 조합 짜지는데 시간이 너무 오래걸려서 수정하고 있습니다~
C++로 작성했고 베포는 생각중입니다.






#include <bits/stdc++.h>        //데스락 조합

using namespace std;

int arr[6]={1000,2,2,2,2,3},Arr[6]={1000,2,2,2,3},n[5];

int A[150][3],B[150][3],C[150][3],D[150][3];

int res[5][5];

int re[5][5];

char *wind="바람",*darkness="어둠",*light="빛",*yeomeong="여명",*earth="땅";

char *health="체력",*gongbang="공방",*def="방어",*att="공격";

struct K

{

    char x[150],y[150],z[150];

};

K a[150],b[150],c[150],d[150];

void dfs(int p, int q, int v)

{

    int i;

    if(q==5)

    {

        for(i=1;i<=5;i++)

        {

            if(arr[i]>0)

            {

                //printf("%d이 0 이상임.\n",arr[i]);

                break;

            }

        }

        if(i==6)

        {

            for(i=1;i<=4;i++)

            {

                if(Arr[i]>0)

                {

                    //printf("%d이 0 이상임.\n",arr[i]);

                    break;

                }

            }

            if(i==5)

            {

                for(i=1;i<=4;i++)

                    for(int j=1;j<=3;j++)

                        re[i][j]=res[i][j];

                for(i=1;i<=3;i++)

                    printf("%s ",a[re[1][i]].x);

                printf("\n");

                for(i=1;i<=3;i++)

                    printf("%s ",b[re[2][i]].x);

                printf("\n");

                for(i=1;i<=3;i++)

                    printf("%s ",c[re[3][i]].x);

                printf("\n");

                for(i=1;i<=3;i++)

                    printf("%s ",d[re[4][i]].x);

                exit(0);

            }

        }

        return;

    }

    if(p==4)

        dfs(1,q+1,1);

    /*printf("p : %d | q : %d | v : %d\n바람 : %d | 방어 : %d\n",p,q,v,arr[1],Arr[3]);

    for(i=1;i<=3;i++)

        printf("%s ",a[res[1][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",b[res[2][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",c[res[3][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",d[res[4][i]].x);

    printf("\n\n\n");*/

    if(q==1)

    {

        for(i=v;i<=n[1];i++)

        {

            if(arr[A[i][1]]>0 && Arr[A[i][2]]>0)

            {

                res[1][p]=i;

                arr[A[i][1]]--;

                Arr[A[i][2]]--;

                dfs(p+1,q,i+1);

                res[1][p]=0;

                arr[A[i][1]]++;

                Arr[A[i][2]]++;

            }

        }

    }

    if(q==2)

    {

        for(i=v;i<=n[2];i++)

        {

            if(arr[B[i][1]]>0 && Arr[B[i][2]]>0)

            {

                res[2][p]=i;

                arr[B[i][1]]--;

                Arr[B[i][2]]--;

                dfs(p+1,q,i+1);

                res[2][p]=0;

                arr[B[i][1]]++;

                Arr[B[i][2]]++;

            }

        }

    }

    if(q==3)

    {

        for(i=v;i<=n[3];i++)

        {

            if(arr[C[i][1]]>0 && Arr[C[i][2]]>0)

            {

                res[3][p]=i;

                arr[C[i][1]]--;

                Arr[C[i][2]]--;

                dfs(p+1,q,i+1);

                res[3][p]=0;

                arr[C[i][1]]++;

                Arr[C[i][2]]++;

            }

        }

    }

    if(q==4)

    {

        for(i=v;i<=n[4];i++)

        {

            if(arr[D[i][1]]>0 && Arr[D[i][2]]>0)

            {

                res[4][p]=i;

                arr[D[i][1]]--;

                Arr[D[i][2]]--;

                dfs(p+1,q,i+1);

                res[4][p]=0;

                arr[D[i][1]]++;

                Arr[D[i][2]]++;

            }

        }

    }

}

int main()

{

    int i;

    printf("A님의 강림수를 입력해주세요.\n");

    scanf("%d",&n[1]);

    printf("강림들을 입력해주세요.\nEx)아르고 빛 공격\n");

    for(i=1;i<=n[1];i++)

    {

        scanf("%s %s %s",a[i].x,a[i].y,a[i].z);

        if(strcmp(a[i].y,wind)==0)

            A[i][1]=1;

        else if(strcmp(a[i].y,darkness)==0)

            A[i][1]=2;

        else if(strcmp(a[i].y,yeomeong)==0)

            A[i][1]=3;

        else if(strcmp(a[i].y,earth)==0)

            A[i][1]=4;

        else if(strcmp(a[i].y,light)==0)

            A[i][1]=5;

        if(strcmp(a[i].z,health)==0)

            A[i][2]=1;

        else if(strcmp(a[i].z,gongbang)==0)

            A[i][2]=2;

        else if(strcmp(a[i].z,def)==0)

            A[i][2]=3;

        else if(strcmp(a[i].z,att)==0)

            A[i][2]=4;

    }


    printf("B님의 강림수를 입력해주세요.\n");

    scanf("%d",&n[2]);

    printf("강림들을 입력해주세요.\nEx)아르고 빛 공격\n");

    for(i=1;i<=n[2];i++)

    {

        scanf("%s %s %s",b[i].x,b[i].y,b[i].z);

        if(strcmp(b[i].y,wind)==0)

            B[i][1]=1;

        else if(strcmp(b[i].y,darkness)==0)

            B[i][1]=2;

        else if(strcmp(b[i].y,yeomeong)==0)

            B[i][1]=3;

        else if(strcmp(b[i].y,earth)==0)

            B[i][1]=4;

        else if(strcmp(b[i].y,light)==0)

            B[i][1]=5;

        if(strcmp(b[i].z,health)==0)

            B[i][2]=1;

        else if(strcmp(b[i].z,gongbang)==0)

            B[i][2]=2;

        else if(strcmp(b[i].z,def)==0)

            B[i][2]=3;

        else if(strcmp(b[i].z,att)==0)

            B[i][2]=4;

    }


    printf("C님의 강림수를 입력해주세요.\n");

    scanf("%d",&n[3]);

    printf("강림들을 입력해주세요.\nEx)아르고 빛 공격\n");

    for(i=1;i<=n[3];i++)

    {

        scanf("%s %s %s",c[i].x,c[i].y,c[i].z);

        if(strcmp(c[i].y,wind)==0)

            C[i][1]=1;

        else if(strcmp(c[i].y,darkness)==0)

            C[i][1]=2;

        else if(strcmp(c[i].y,yeomeong)==0)

            C[i][1]=3;

        else if(strcmp(c[i].y,earth)==0)

            C[i][1]=4;

        else if(strcmp(c[i].y,light)==0)

            C[i][1]=5;

        if(strcmp(c[i].z,health)==0)

            C[i][2]=1;

        else if(strcmp(c[i].z,gongbang)==0)

            C[i][2]=2;

        else if(strcmp(c[i].z,def)==0)

            C[i][2]=3;

        else if(strcmp(c[i].z,att)==0)

            C[i][2]=4;

    }


    printf("D님의 강림수를 입력해주세요.\n");

    scanf("%d",&n[4]);

    printf("강림들을 입력해주세요.\nEx)아르고 빛 공격\n");

    for(i=1;i<=n[4];i++)

    {

        scanf("%s %s %s",d[i].x,d[i].y,d[i].z);

        if(strcmp(d[i].y,wind)==0)

            D[i][1]=1;

        else if(strcmp(d[i].y,darkness)==0)

            D[i][1]=2;

        else if(strcmp(d[i].y,yeomeong)==0)

            D[i][1]=3;

        else if(strcmp(d[i].y,earth)==0)

            D[i][1]=4;

        else if(strcmp(d[i].y,light)==0)

            D[i][1]=5;

        if(strcmp(d[i].z,health)==0)

            D[i][2]=1;

        else if(strcmp(a[i].z,gongbang)==0)

            D[i][2]=2;

        else if(strcmp(d[i].z,def)==0)

            D[i][2]=3;

        else if(strcmp(d[i].z,att)==0)

            D[i][2]=4;

    }


    dfs(1,1,1);


    for(i=1;i<=3;i++)

        printf("%s ",a[re[1][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",b[re[2][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",c[re[3][i]].x);

    printf("\n");

    for(i=1;i<=3;i++)

        printf("%s ",d[re[4][i]].x);

}

댓글5

    • 상호 : (주)하이브로
    • 주소 : 서울특별시 강남구 영동대로 432 준앤빌딩 4층 (135-280)
    • 대표 : 원세연
    • 사업자번호 : 120-87-89784
    • 통신판매업신고 : 강남-03212호
    • Email : support@highbrow.com

    Copyright © highbrow, Inc. All rights reserved.