返回题目问答
讨论 / 题目问答/ 帖子详情

60分,想知道问题在哪

#include<iostream>
#include<vector>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    vector<vector<int>> nums(m+1, vector<int>(n+1, 0));
    int top = 1, bottom = m, left = 1, right = n;
    for (int i = 1;i<=m*n;) {
        for (int j = top; j <= bottom; ++j) {
            nums[j][right] = i;
            i++;
        }
        right--;
        for (int j = right; j >= left; --j) {
            nums[bottom][j] = i;
            i++;
        }
        bottom--;
        for (int j = bottom; j >= top; j--) {
            nums[j][left] = i;
            i++;
        }
        left++;
        for (int j = left; j <= right; ++j) {
            nums[top][j] = i;
            i++;
        }
        top++;
    }
    for(int i = 1; i <= m; ++i) {
        for (int j = 1; j <= n; ++j) {
            printf("%5d", nums[i][j]);
        }
        cout << endl;
    }
    return 0;
}
2 回复 0 转发 0 喜欢 116 阅读
回复 (2)
默认 最新
qzhs 2024/4/5
#include<iostream>
#include<vector>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    vector<vector<int>> nums(m+1, vector<int>(n+1, 0));
    int top = 1, bottom = m, left = 1, right = n;
    for (int i = 1;i<=m*n;) {
        for (int j = top; j <= bottom; ++j) {
        	if(i > m*n) {//边界跳出
            	break;
			}
            nums[j][right] = i;
            i++;
        }
        right--;
        for (int j = right; j >= left; --j) {
        	if(i > m*n) {
            	break;
			}
            nums[bottom][j] = i;
            i++;
        }
        bottom--;
        for (int j = bottom; j >= top; j--) {
        	if(i > m*n) {
            	break;
			}
            nums[j][left] = i;
            i++;
        }
        left++;
        for (int j = left; j <= right; ++j) {
        	if(i > m*n) {
            	break;
			}
            nums[top][j] = i;
            i++;
        }
        top++;
    }
    for(int i = 1; i <= m; ++i) {
        for (int j = 1; j <= n; ++j) {
            printf("%5d", nums[i][j]);
        }
        cout << endl;
    }
    return 0;
}
0
jiangjiang 2024/4/5
谢谢大佬!
0