⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2674309_ac_0ms_252k.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
#include <stdio.h>
#include <ctype.h>
#include <string.h>

int l;
char cir[101][101];
int visited[101][101][4];

char value[27];
int dir[][2] = {{0,-1},{-1,0},{0,1},{1,0}};
char ch[] = "-|-|";
int mm[] = {2,3,0,1};

int input()
{
	int flag;

	l = flag = 0;
	while (gets(cir[l++]))
	{
		if (cir[l-1][0]=='*')
		{
			flag = 1;l--;
			break;
		}
	}
	return flag;
}

int work(int i,int j)
{
	int k, a, b;
	char cha;

	cha = cir[i][j];
	a = i, b = j;
	if(isalpha(cir[i][j])&&cir[i][j]!='o')
		return value[cir[i][j]-'A']-'0';
	if(cir[i][j]=='>')
		return (work(i-1,j-3)||work(i+1,j-3));
	if(cir[i][j]==')')
		return (work(i-1,j-3)&&work(i+1,j-3));
	if(cir[i][j]=='o')
	{
		if(cir[i][j-1]=='>'||cir[i][j-1]==')')
			return !work(i,j-1);
	}
	for (k = 0; k < 4; k++)
	{
		if (cir[i+dir[k][0]][j+dir[k][1]]==ch[k]&&!visited[i][j][k])
		{
			cir[i][j] = ch[k];
			visited[i][j][k] = 1;
			break;
		}
	}
	while (cir[i][j]==ch[k])
	{
		i += dir[k][0];
		j += dir[k][1];
	}
	cir[a][b] = cha;
	visited[i][j][mm[k]] = 1;
	if(cha=='o')
		return !work(i,j);
	else
		return work(i,j);
}

void solve()
{
	int i, j;

	memset(visited,0,sizeof(visited));
	for (i = 0; i < l; i++)
	{
		for (j = 0; cir[i][j]!='\0'; j++)
			if(cir[i][j]=='?')
			{
				printf("%d\n",work(i,j));
				cir[i][j] = '?';
				goto wk;
			}
	}
wk:
	scanf("%s",value);
	getchar();
	if (value[0]!='*')
		solve();
}

int main()
{
	while (input())
	{
		scanf("%s",value);
		solve();
		printf("\n");
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -