旋转数字矩阵 od

结构得记一下,否则还是刷不出来。参考leetcode 螺旋矩阵2 No59 代码随想录版本。

区别的地方在于:

1、里面的列数自己决定,需要判断最小列

2、数量小于行数,单独打印输出。

3、其他情况1:要考虑 count已经写完,单矩阵有空余,需要输出'*'

4、其他情况2:count需要在两个地方控制,一个是while(负责大圈停止的)一个是for循环(count<= size防止数超了)

复制代码
#include <iostream>
#include "vector"
using namespace std;

void print(int size, int row) {
    int a = 0; 
    for (int i = 1; i < size + 1; i++) {
        cout<<i<<endl;
    }
    int count = row - size;
    while(count--) {
        cout<<'*'<<endl;
    }
    return;
}

int main() {
    int size,row, col;
    while (cin >> size >> row) { // 注意 while 处理多个 case
        if (size <= row) {
            print(size,row); // 如果一列就能放下就放下
            return 0;
        } else {
            col = size / row + 1;//用最少得列数,用总数量/行数 +1 即列数。
        }
        vector<vector<int>> vec(row,vector<int>(col));

        int start_x = 0;
        int start_y = 0;
        int offset = 1;
        int count = 1;
        int i,j;

        while(count <= size) {
            i = start_x;
            j = start_y;
            //向右
            for (j = start_y; j < col - offset && count <= size; j++) {
                vec[i][j] = count++;
            }
            //向下
            for (i = start_x; i < row - offset && count <= size; i++) {
                vec[i][j] = count++;
            }
            //向左
            for (; j > start_y && count <= size; j--) {
                vec[i][j] = count++;
            }
            //向上
            for (; i > start_x && count <= size; i--) {
                vec[i][j] = count++;
            }

            start_x++;
            start_y++;
            offset+=1;
        }

        for(int i = 0; i < vec.size(); i++) {
            for (int j = 0; j < vec[i].size(); j++) {
                if (vec[i][j] == 0) {
                    cout<<'*'<<' ';
                } else {
                    cout<<vec[i][j]<<' ';
                }
            }
            cout<<endl;
        }
       
    }
     return 0;
    
}
// 64 位输出请用 printf("%lld")
相关推荐
致Great1 小时前
科研人的 AI,不该只回答问题:我用字节TraeWork 跑了一遍真实研究任务
算法
纵有疾風起1 小时前
线性表的定义与基本操作 — 从逻辑结构到 ADT 接口
数据结构·算法·408·线性表·adt
测试_AI_一辰2 小时前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
lucas_AI2 小时前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
LuminousCPP2 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil2082 小时前
leetcode 三数之和
数据结构·算法·leetcode
小小龙学IT3 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
eBest数字化转型方案3 小时前
从工程视角拆解冰柜资产管理:拍照识别 pipeline、纯净度算法与 IoT 选型踩坑
人工智能·物联网·算法
Interview Aid1123 小时前
Roblox OA 面经|小游戏+编程双修,Coding 两题满分通过
算法
闲研随记3 小时前
【文献阅读 ICLR 2026】RL算法:Co-Rewarding
算法