
데스락 자동 조합 프로그램 이후에 디멘션 요청도 많아서 만들어 봤습니다~~
이번 주 안에 마지막으로 테스트 해보고 팁게에 배포하겠습니다.
#include <bits/stdc++.h> //디멘 조합
using namespace std;
int arr[6]={1000,2,2,2,2,2},Arr[6]={1000,2,2,2,2,2},n[5];
int A[150][3],B[150][3],C[150][3],D[150][3];
int res[5][5];
int re[5][5];
char *fire="불",*darkness="어둠",*light="빛",*yeomeong="여명",*nightmare="악몽";
char *health="체력",*gongbang="공방",*healatt="체공",*att="공격",*healdef="체방";
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)
break;
}
if(i==6)
{
for(i=1;i<=5;i++)
{
if(Arr[i]>0)
break;
}
if(i==5)
{
printf("\n==============================\n\n");
for(i=1;i<=4;i++)
for(int j=1;j<=3;j++)
re[i][j]=res[i][j];
printf("A님 : ");
for(i=1;i<=3;i++)
printf("%s ",a[re[1][i]].x);
printf("\n");
printf("B님 : ");
for(i=1;i<=3;i++)
printf("%s ",b[re[2][i]].x);
printf("\n");
printf("C님 : ");
for(i=1;i<=3;i++)
printf("%s ",c[re[3][i]].x);
printf("\n");
printf("D님 : ");
for(i=1;i<=3;i++)
printf("%s ",d[re[4][i]].x);
exit(0);
}
}
return;
}
if(p==4)
dfs(1,q+1,1);
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("속성, 타입은 글자하나라도 다르게 쓰시면 안됩니다.\n");
printf("속성 : 땅 물 불 바람 빛 어둠 여명 황혼 악몽\n");
printf("타입 : 체력 공방 방어 공격 체방 체공 중립\n\n");
printf("==============================\n\n");
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,fire)==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,nightmare)==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,healatt)==0)
A[i][2]=3;
else if(strcmp(a[i].z,att)==0)
A[i][2]=4;
else if(strcmp(a[i].z,healdef)==0)
A[i][2]=5;
}
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,fire)==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,nightmare)==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,healatt)==0)
B[i][2]=3;
else if(strcmp(b[i].z,att)==0)
B[i][2]=4;
else if(strcmp(b[i].z,healdef)==0)
B[i][2]=5;
}
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,fire)==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,nightmare)==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,healatt)==0)
C[i][2]=3;
else if(strcmp(c[i].z,att)==0)
C[i][2]=4;
else if(strcmp(c[i].z,healdef)==0)
C[i][2]=5;
}
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,fire)==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,nightmare)==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(d[i].z,gongbang)==0)
D[i][2]=2;
else if(strcmp(d[i].z,healatt)==0)
D[i][2]=3;
else if(strcmp(d[i].z,att)==0)
D[i][2]=4;
else if(strcmp(d[i].z,healdef)==0)
D[i][2]=5;
}
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);
}