CCI(2)-- Arrays and Strings
来源:互联网 发布:playclub捏脸详细数据 编辑:程序博客网 时间:2024/06/07 05:24
题目
给一个int类型的NxN矩阵,旋转90°
解题思路
书里的解题思路是把矩阵从外到里按层遍历,每次遍历过程中对四边的每一个数字进行遍历。
先上一个4x4矩阵的代码:
void rotate(int matrix[4][4], int n) { for (int layer = 0; layer < n / 2; layer++) { int first = layer; int last = n - 1 - layer; for (int i = first; i < last; i++) { int offset = i - first; // save top int top = matrix[first][i]; // top = right matrix[first][i] = matrix[i][last]; // right = bottom matrix[i][last] = matrix[last][last - offset]; // bottom = left matrix[last][last - offset] = matrix[last - offset][first]; // left = top matrix[last - offset][first] = top; } }}
再上一个通用版代码
void rotate(int **matrix, int n) { for (int layer = 0; layer < n / 2; layer++) { int first = layer; int last = n - 1 - layer; for (int i = first; i < last; i++) { int offset = i - first; // save top int top = *((int *)matrix + first * n + i); // top = right *((int *)matrix + first * n + i) = *((int *)matrix + i * n + last); // right = bottom *((int *)matrix + i * n + last) = *((int *)matrix + last * n + last - offset); // bottom = left *((int *)matrix + last * n + last - offset) = *((int *)matrix + (last - offset) * n + first); // left = top *((int *)matrix + (last - offset) * n + first) = top; } }}
测试代码
void test() { int matrix[4][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; rotate1((int **)matrix, 4); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { printf("%d\t", matrix[i][j]); } putchar('\n'); }}int main() { test();}
阅读全文
0 0
- CCI(2)-- Arrays and Strings
- CCI(1)-- Arrays and Strings
- 【CareerCup】 Arrays and Strings—Q1.2
- Arrays and Strings----1
- Arrays and Strings----3
- Arrays and Strings----4
- Arrays and Strings----7
- Chapter 1 Arrays and Strings
- 3-Strings, Vectors, and Arrays
- Chapter 1 Arrays and Strings - 1.1
- Chapter 1 Arrays and Strings - 1.2
- Chapter 1 Arrays and Strings - 1.3
- Chapter 1 Arrays and Strings - 1.4
- Chapter 1 Arrays and Strings - 1.5
- Chapter 1 Arrays and Strings - 1.6
- Chapter 1 Arrays and Strings - 1.7
- Chapter 1 Arrays and Strings - 1.8
- 【算法】【CareerCup】Chapter1----Arrays and Strings
- C++ 头文件algorithm 1——partition
- 1、面向对象的解释
- Tour HDU
- 2017 JUST Programming Contest 3.0 I. Move Between Numbers
- ARC081 E
- CCI(2)-- Arrays and Strings
- 第一次
- linux
- jupyter notebook的安装与使用
- Java——值传递
- 2. OpenMAX系列 —— SoftOMXPlugin
- xml和Json的优缺点
- multi-paxos和raft区别
- MySQL-help