pku1888.cpp

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 87 行

CPP
87
字号
#include <stdio.h>
#include <string.h>
#define size 11

char Map[size][size];
int ID[size][size];
int M, N;

void input()
{
	int i;
	for (i = 0; i < M; i++)
	{
		scanf("%s", Map[i]);
	}
}

void init()
{
	int i, j, k;
	memset(ID, 0, sizeof(ID));
	k = 1;
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++)
		{
			if (Map[i][j] != '*' && (i - 1 < 0 || j - 1 < 0 || Map[i - 1][j] == '*' || Map[i][j - 1] == '*'))
			{
				ID[i][j] = k++;
			}
		}
	}
}

void Solve()
{
	int i, j, k;
	printf("Across\n");
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++)
		{
			if (ID[i][j] && (j - 1 < 0 || Map[i][j - 1] == '*'))
			{
				printf("%3d.", ID[i][j]);
				for (k = j; k < N && Map[i][k] != '*'; k++)
				{
					printf("%c", Map[i][k]);
				}
				printf("\n");
			}
		}
	}
	printf("Down\n");
	for (i = 0; i < M; i++)
	{
		for (j = 0; j < N; j++)
		{
			if (ID[i][j] && (i - 1 < 0 || Map[i - 1][j] == '*'))
			{
				printf("%3d.", ID[i][j]);
				for (k = i; k < M && Map[k][j] != '*'; k++)
				{
					printf("%c", Map[k][j]);
				}
				printf("\n");
			}
		}
	}
	printf("\n");
}

int main()
{
	int kase = 1;
	while (1 == scanf("%d", &M) && M)
	{
		scanf("%d", &N);
		input();
		init();
		printf("puzzle #%d:\n", kase++);
		Solve();
	}
	return 0;
}

⌨️ 快捷键说明

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