用Swift3实现从中心开始,逆时针打印 n*n 矩阵
来源:互联网 发布:单反照片导入mac 编辑:程序博客网 时间:2024/06/05 17:32
从中心开始,逆时针打印 n*n 矩阵例如:[ 0, 1, 2, 3][ 4, 5, 6, 7][ 8, 9, 10, 11][ 12, 13, 14, 15]输出:6,5,9,10,11,7,3,2,1,0,4,8,12,13,14,15func printNN( n:Int){ var row = 0 ; var col = 0; if(n%2==0){//偶数行时 row = n/2; col = row + 1; }else{//奇数行时 row = (n+1)/2 col = row } var k = n - col //与外围相差多少个数字 var s = "";//最终的字符串 if(k<0){ // n = re1 时 print("0") return } while(k > -1){ for d in 0..<4{ switch(d){ case 0 ://向上 // int i = row-1 let m = row - 2 ; if m >= 0 && m > k - 1 { var j = k if j < 0 { j = 0 ; } for i in (j ... m).reversed(){ if(s == ""){ s = rowCol(row: i,col: col-1,n: n) }else{ s = s + "," + rowCol(row: i,col: col-1,n: n) } } row = k + 1 ; col = col - 1 ; print(s + "===\(d)" ) } break; case 1 ://向左 let m = col-1 if m >= 0 && m > k - 1 { if n % 2 == 1 && m <= k { break } for i in (k ... m).reversed(){ if(s == ""){ s = rowCol(row: row-1,col: i,n: n) }else{ s = s + "," + rowCol(row: row-1,col: i,n: n) } } row = row + 1 ; col = k + 1 ; print(s + "===\(d)" ) } break; case 2 ://向下 let m = row - 1 let j = n-k if m < j - 1 && m>=0{ for i in m ..< j { if(s == ""){ s = rowCol(row: i,col: col-1,n: n) }else{ s = s + "," + rowCol(row: i,col: col-1,n: n) } } row = n - k ; col = col + 1 ; print(s + "===\(d)" ) } break; case 3 ://向右// int i = let m = col - 1 var j = n - k if k > 0 { j = j + 1 } if m <= j - 1 && m >= 0 { for i in m ..< j { if(s == ""){ s = rowCol(row: row-1,col: i,n: n) }else{ s = s + "," + rowCol(row: row-1,col: i,n: n) } }// row = row - 1 ; col = n - k + 1 ; print(s + "===\(d)" ) } break; default: break; } } k -= 1; } print(s)}func rowCol(row:Int , col:Int,n:Int )->String{ return String(row * n + col)}printNN(n: 6)
0 0
- 用Swift3实现从中心开始,逆时针打印 n*n 矩阵
- 用Swift3实现n*n阶矩阵逆时针输出
- 用Swift3实现n*n阶矩阵顺时针输出
- n*n阶矩阵逆时针输出
- n*n阶矩阵逆时针输出
- 打印 N*N 螺旋矩阵
- 打印N*N矩阵
- 输入N, 打印 N*N 矩阵
- 逆时针打印矩阵
- 逆时针打印矩阵
- 逆时针打印矩阵
- 一种N*N矩阵的打印方法
- N×N矩阵螺旋打印输出
- 顺时针打印m*n矩阵
- 美团面试题 将一个n X n二维数组逆时针旋转45度后打印
- 输入一个n*n的字符矩阵,把它逆时针旋转90度后输出:
- 顺时针和逆时针打印矩阵
- java顺时针、逆时针打印矩阵
- Hessian矩阵与牛顿法
- 开源软件和商业软件版本的介绍:alpha、beta、rc、GA等等
- Servlet开发须知知识点
- tornado处理post请求的json数据
- PHP中单引号和双引号的区别
- 用Swift3实现从中心开始,逆时针打印 n*n 矩阵
- ACM 水题进制转换
- python——模块——__future__
- 【深度剖析HMM(附Python代码)】2.隐马尔科夫链HMM的EM训练过程
- C语言指针入门
- MATLAB 矩阵运算
- Linux打卡Day6-磁盘与分区
- 报头压缩-ROHC报文/校验/编码
- 杭电1002(大数A+B) 之 A + B Problem II