View Code of Problem 3311

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

int main() {
	int m, n;
	char x[100][100];
	char temp = 'A';
	int y[2] = { 0,0 };
	int z[4][2] = { {0,1},{1,0},{0,-1},{-1,0} };
	int k = 0;
	scanf("%d %d", &m, &n);
	for (int i = 0;i < m;i++) {
		for (int j = 0;j < n;j++) {
			x[i][j] = '\0';
		}
	}
	for (int i = 0;i < m*n;i++) {
		if (y[0]<=m-1&&y[0]>=0&&y[1]>=0&&y[1]<=n-1&&x[y[0]][y[1]]=='\0') {
			if (temp > 'Z') {
				temp = 'A';
			}
			x[y[0]][y[1]] = temp;
			temp++;
			y[0] += z[k][0];
			y[1] += z[k][1];
		}
		else {
			y[0] += z[(k + 2) % 4][0];
			y[1] += z[(k + 2) % 4][1];
			k++;
			if (k > 3) {
				k = 0;
			}
			if (x[y[0] + z[k][0]][y[1] + z[k][1]] != '\0') {
				break;
			}
			else {
				y[0] += z[k][0];
				y[1] += z[k][1];
				i--;
			}
		}
	}
	for (int i = 0;i < m;i++) {
		for (int j = 0;j < n;j++) {
			printf("   %c", x[i][j]);
		}
		printf("\n");
	}
}

Double click to view unformatted code.


Back to problem 3311