poj 2803 Defining Moment 模拟

View Code
#include <stdio.h>
#include <string.h>

int start,end;
char s[105];

void p()
{
int i=0;
for (i=start;i<=end;i++)printf("%c",s[i]);
}

int main()
{
int n,i,j,k,l,pre_ans,suf_ans;
int pre_ar[5]={4,4,3,2,2},suf_ar[5]={2,3,3,1,4};
char prefix[5][5]={"anti","post","pre","re","un"};
char suffix[5][5]={"re","gni","ezi","s","noit"};
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%s",s);
pre_ans=suf_ans=-1;
start=0,end=strlen(s)-1;
for (j=0;j<5;j++)
{
k=0;
while (prefix[j][k]==s[k])k++;
if(pre_ar[j]==k)
{
pre_ans=j;
start=k;
}
k=strlen(s)-1;
l=0;
while (suffix[j][l]==s[k])
{
k--,l++;
}
if(l==suf_ar[j])
{
suf_ans=j;
end=k;
}
}
if(pre_ans==0)printf("against ");
if(pre_ans==1)printf("after ");
if(pre_ans==2)printf("before ");
if(pre_ans==4)printf("not ");
if(suf_ans==-1)p();
if(suf_ans==0)
{
printf("one who ");
p();
printf("s");
}
if(suf_ans==1)
{
printf("to actively ");
p();
}
if (suf_ans==2)
{
printf("change into ");
p();
}
if(suf_ans==3)
{
printf("multiple instances of ");
p();
}
if(suf_ans==4)
{
printf("the process of ");
p();
printf("ing");
}
if(pre_ans==3)
printf(" again");
printf("\n");
}
return 0;
}
posted @ 2011-11-23 20:30  104_gogo  阅读(164)  评论(0编辑  收藏  举报