UVA 620 - Cellular Structure

5035 단어 struct
문제를 몇 번 읽었는데도 제목의 뜻을 모르겠어요. 에이, 이해력. 다른 사람의 코드를 본 후에 오, 그렇군요. 여기서 제목에 대한 이해를 간단히 말씀드리자면 우리는 이런 세포사슬이 있는데 그 중에서 세포는 A와 B 두 가지밖에 없어요. 이 세포사슬을 드릴게요. 주어진 세 가지 상태를 거쳐 현재의 상태로 변화할 수 있는지 보여주고 출력이 현재 어떤 상태인지 보여드릴게요.확실히 DPS 같애.
코드는 다음과 같습니다.
#include<stdio.h>
#include<string.h>
#define MAXN 100100
int n, stage;
char c[MAXN];
char t[4][20] = {"SIMPLE","FULLY-GROWN","MUTAGENIC","MUTANT"};
void dp(int head, int last, int flag)
{
if(head == last)
{
if(c[head] == 'A')
{
if(flag)
stage = 1, flag = 0;
}
else stage = 4;
}
else if(last - head >= 2)
{
if(c[last] == 'B'&&c[last-1] == 'A')
{
if(flag)
stage = 2, flag = 0;
dp(head, last-2,flag);
}
else if(c[head] == 'B' && c[last] == 'A')
{
if(flag)
stage = 3, flag = 0;
dp(head+1, last-1,flag);
}
else stage = 4;
}
else stage = 4;
}
void input()
{
while(scanf("%d",&n) == 1)
for(int i = 0; i < n; i ++)
{
scanf("%s", c);
int len = strlen(c);
int rear = len - 1;
int first = 0;
dp(first,rear,1);
printf("%s
",t[stage-1]);
}
}
int main()
{
input();
return 0;
}

좋은 웹페이지 즐겨찾기