博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1-4-之字形打印矩阵
阅读量:6701 次
发布时间:2019-06-25

本文共 3053 字,大约阅读时间需要 10 分钟。

1 /*2     题目描述:3         对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。4         给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。5         测试样例:6             [[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,37             返回:[1,2,3,6,5,4,7,8,9,12,11,10]8 */
1 #include 
2 #include
3 using namespace std; 4 /* 5 实现斜之字打印矩阵: 6 eg:矩阵A为: 7 1 2 3 8 4 5 6 9 7 8 910 10 11 1211 斜之字打印的结果为:12 [1,2,4,7,5,3,6,8,10,11,9,12]13 */14 vector
printLine(vector
> m, int t1, int t2, int d1, int d2, bool flag){15 vector
line;16 if (!flag){ // 从右上到左下打印17 while (t1 <= d1 && t2 >= d2){18 line.push_back(m[t1++][t2--]);19 }20 }21 else{ // 从左下到右上打印22 while (t1 <= d1 && t2 >= d2){23 line.push_back(m[d1--][d2++]);24 }25 }26 return line;27 }28 29 vector
printMatrix(vector
> mat, int n, int m) {30 int t1 = 0;31 int t2 = 0;32 int d1 = 0;33 int d2 = 0;34 bool flag = true;35 vector
rt;36 while (t1 < n && t2 < m && d1 < n && d2 < m){37 vector
line = printLine(mat, t1, t2, d1, d2, flag);38 for (int i = 0; i < line.size(); i++)39 rt.push_back(line[i]);40 if (t2 == m-1)41 t1++;42 else43 t2++;44 if (d1 == n-1)45 d2++;46 else47 d1++;48 flag = !flag;49 }50 return rt;51 }
1 /* 2     NowCoder上面的题目较简单。 3     矩阵A的打印结果为: 4         [1,2,3,6,5,4,7,8,9,12,11,10] 5 */ 6 vector
printMatrix(vector
> mat, int n, int m) { 7 vector
rt; 8 bool flag = true; 9 for (int i = 0; i < n; i++){ // 逐行打印10 if (flag){ // 从左到右打印11 for (int j = 0; j < m; j++)12 rt.push_back(mat[i][j]);13 }14 else{ // 从右向左打印15 for (int j = m-1; j>= 0; j--)16 rt.push_back(mat[i][j]);17 }18 flag = !flag;19 }20 return rt;21 }
1 test: 2 int main(){ 3     vector
> matrix; 4 vector
a; 5 a.push_back(1); 6 a.push_back(2); 7 a.push_back(3);/* 8 a.push_back(4);*/ 9 matrix.push_back(a);10 11 vector
b;12 b.push_back(4);13 b.push_back(5);14 b.push_back(6);/*15 b.push_back(8);*/16 matrix.push_back(b);17 18 vector
c;19 c.push_back(7);20 c.push_back(8);21 c.push_back(9);/*22 c.push_back(12);*/23 matrix.push_back(c);24 25 vector
d;26 d.push_back(10);27 d.push_back(11);28 d.push_back(12);/*29 c.push_back(12);*/30 matrix.push_back(d);31 32 vector
rt;33 rt = printMatrix(matrix,4,3);34 for (int i = 0; i < rt.size(); i++)35 cout << rt[i] << ",";36 return 0;37 }

 

转载于:https://www.cnblogs.com/qianmacao/p/4884727.html

你可能感兴趣的文章
【CentOS 7笔记11】,目录权限,所有者与所有组,隐藏权限#171022
查看>>
正则介绍_grep
查看>>
Mybatis 详解--- 一级缓存、二级缓存
查看>>
Koa项目搭建过程详细记录
查看>>
区块链BAAS平台:公共或私人区块链编程以用于各种用途
查看>>
Sublime 资源汇总
查看>>
kotlin使用spring data jpa(一)
查看>>
Memcached 内存管理(一)
查看>>
编写数学公式的好工具
查看>>
前端那些事之原生 js实现贪吃蛇篇
查看>>
五种方式让你在java中读取properties文件内容不再是难题
查看>>
SEO新手入门笔记
查看>>
Myeclipse5.5获取注册码
查看>>
Zabbix中文模式:图片下面的字符乱码
查看>>
面向对象理论概述
查看>>
Flex与Java通信之HttpService方式
查看>>
2013 ACM/ICPC Asia Regional Changsha Online - C
查看>>
ACM中java快速入门
查看>>
40 个重要的 HTML5 面试问题及答案
查看>>
itellyou操作系统,office等软件的很全的下载站
查看>>