读入未知数目的N*N二维矩阵(C++实现,附代码)

在我们做笔试题的时候,经常会遇到读入一个大小未知的数组的情况,比如一个经典的笔试题:求一个输入为N*N二维矩阵的90度旋转,但是题目并没告诉我们这个N是多大。有可能是3*3:

1 2 3

4 5 6

7 8 9

也可能是4*4:

11 12 13 14

21 22 23 24

31 32 33 34

41 42 43 44

那么为了我们的算法能够处理所有的N*N维矩阵,首先我们得能够读入这个输入的二维矩阵。整个过程分为三步:

1、选用vector来保存这个二维数组

首由于不知道N究竟是多大,那么如果用数组int num[N][N]来保存就会面临一个问题,不知道该分配一个多大的数组,当然也可以分配得很大,但是有可能浪费空间,分配不够,那更会错误。相信大家已经想到了,用vector来保存就好啦,vector有它自己的内存分配机制,调用者无须考虑分配多大空间

2、用getline来读入一行

cin和getline的区别在于:

cin是遇到空白/空格即认为是此次读取结束,getline是读完一行才认为是读取结束,但是getline只能把读入的内容保存为一个字符串

string str;

getline(cin,str);

int val;

cin>>val;

由于我们不知道N是多少,即不知道一行有多少个元素,所以不能用cin来读入数据,而要用getline

3、getline读入字符串转换为整数

由于getline会将其读入到这一行保存为一个字符串(包括读入到空格),因此,我们需要对这个字符串进行处理,以提取出元素个数以及将各个字符元素转换为整数,进而保存到vector中

//读入一行字符串,然后将字符串里的字符转换为数字并存到vector<int> mid里

    vector<int> mid;

    for

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值