题目描述
思路
定义上下左右四个边界,从左上角开始,按照右、下、左、上的方向依次遍历即可
AC代码
#include <iostream>
using namespace std;
const int N = 1010;
int res[N][N];
int n, m, r, c;
int main()
{
cin >> n >> m >> r >> c;
int left = 0, right = m - 1, up = 0, down = n - 1;
int num = 1;
while(num <= n * m)
{
//向右
for(int i = left; i <= right; i ++) res[up][i] = num ++;
up ++;
//向下
for(int i = up; i <= down; i ++) res[i][right] = num ++;
right --;
//向左
for(int i = right; i >= left; i --) res[down][i] = num ++;
down --;
//向上
for(int i = down; i >= up; i --) res[i][left] = num ++;
left ++;
}
cout << res[r - 1][c - 1] << endl;
return 0;
}
欢迎大家批评指正!!!