View Code of Problem 3311

#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int main() {
	int m, n; cin >> m >> n;
	vector<vector<int> > arr(m);
	for (int i = 0; i < m; i++)
		arr[i].resize(n);
	int flag = 0;
	int k = 0, i = 0, j = 0;
	while (k != m * n) {
		arr[i][j] = (k % 26) + 1;
		switch (flag) {
		case 0:
			if (j < n - 1 && arr[i][j + 1] == 0)j++;
			else {
				i++;
				flag = 1;
			}
			break;
		case 1:
			if (i < m - 1 && arr[i + 1][j] == 0)i++;
			else {
				j--;
				flag = 2;
			}
			break;
		case 2:
			if (j > 0 && arr[i][j - 1] == 0)j--;
			else {
				i--;
				flag = 3;
			}
			break;
		case 3:
			if (arr[i - 1][j] == 0)i--;
			else {
				j++;
				flag = 0;
			}
			break;
		}
		k++;
	}
	for (int i = 0; i < m; i++) {
		for (int j = 0; j < n; j++)
			cout << setw(4) << char(arr[i][j] - 1 + 'A') ;
		cout << endl;
	}
}

Double click to view unformatted code.


Back to problem 3311