您的位置:首页 > 大数据 > 人工智能

POJ 2849 brainf*ck

2013-12-17 17:03 465 查看

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int cao[32768],pa[130000],stack[130000];
int p,ls;
void caonima(int v)
{
v=cao[p]+v;
if (v == -1)
v=255;
if (v == 256)
v=0;
cao[p]=v;
}
void caonimei(int v)
{
v=v+p;
if (v == -1)
v=32767;
if (v == 32768)
v=0;
p=v;
}
int main()
{
int n,fuckall,lp,T,i,j,k,cnt;
char tc,pro[130000];
scanf("%d",&T);
getchar();
k=1;
while (T--)
{

p=0;
memset(cao,0,sizeof(cao));
lp=0;
while (1)
{
scanf("%c",&pro[lp]);
lp++;
if (pro[lp-1] == 'd' && pro[lp-2] == 'n' && pro[lp-3] == 'e')
{
pro[lp-3]='\0';
lp-=3;
break;
}
}
printf("PROGRAM #%d:\n",k);
k++;
cnt=0;
ls=0;
for (i=0; i<lp; i++)
{
if (pro[i] == '[')
{
cnt++;
stack[ls]=i;
ls++;
}
if (pro[i] == ']' && cnt == 0)
{
cnt=-1;
break;
}
else if (pro[i] == ']' && cnt != 0)
{
cnt--;
pa[stack[ls-1]]=i;
pa[i]=stack[ls-1];
ls--;
}
}
if (cnt != 0)
{
printf("COMPILE ERROR\n");
continue;
}
for (i=0; i<lp; i++)
{
tc=pro[i];
if (tc == '%')
{
while (pro[i] != '\n')
{
pro[i]='f';
i++;
}
}
if (tc == '+')
{
caonima(1);
}
else if (tc == '-')
{
caonima(-1);
}
else if (tc == '>')
{
caonimei(1);
}
else if (tc == '<')
{
caonimei(-1);
}
else if (tc == '.')
{
printf("%c",cao[p]);
}
else if (tc == '[')
{
if (cao[p] == 0)
{
i=pa[i];
}
}
else if (tc == ']')
{
if (cao[p] != 0)
{
i=pa[i];
}
}

}
printf("\n");
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: