Меня таким тривиальным вещам учили в универе.
Всё думал, а зачем такое преподавать студентам?
Надо же с основ информатики и всякой теории,
А они берут и тычкают стандартными задачами студентов,
Дескать "развивает инженерное мышление".
Ага, куда там - идёшь на интервью при первой же оплошности
Тебе делают втык как-будто ты сам вычислительная машина
И должен сразу отвечать в соответствии с их требованиями
Энивей, представляю алгоритм печати элелментов двумерного массива
в спиралевидной форме, об области его применения думайте сами.
Часто задаваемая задача на интервью в таких гигантах как
Google, Amazon, Microsoft etc.
Code:
#include <iostream>
using namespace std;
template<int n, int m>
void printSpirally(int a[n][m]) {
int left = 0, right = m, top = 0, down = n, i;
while(true) {
//print upper row
for(i = left; i < right; ++i) cout << a[top][i] << ' ';
++top;
if(top > down - 1) break;
//print right column
for(i = top; i < down; ++i) cout << a[i][right - 1] << ' ';
--right;
if(left > right - 1) break;
//print lower row
for(i = right - 1; i >= left; --i) cout << a[down - 1][i] << ' ';
--down;
if(top > down - 1) break;
//print left column
for(i = down - 1; i >= top; --i) cout << a[i][left] << ' ';
++left;
if(left > right - 1) break;
}
}
int main() {
int a[][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}, {17,18,19,20}};
printSpirally<5,4>(a);
return 0;
}