zoukankan      html  css  js  c++  java
  • 旋转n阶矩阵

    1   2   3

    4   5   6

    7   8   9

    顺时针旋转90度

    7   4   1

    8   5   2

    9   6   3

    解题方法:

    (1)上下颠倒:

    7   8   9

    4   5   6

    1   2   3

    (2)反斜杠对角线折叠

    7   4   1

    8   5   2

    9   6   3

    代码:

     1 #include<stdio.h>
     2 #define N 5 //矩阵的阶数 
     3 
     4 /*交换两个变量值*/
     5 void swap(int* a,int* b) {
     6     int temp = *a;
     7     *a = *b;
     8     *b = temp;
     9 }
    10 /*顺时针旋转矩阵90度*/
    11 void xuanzhuan(int a[][N]) {//只写列N,不要写行N 
    12     
    13     /*上下颠倒*/
    14     int i = 0;
    15     int j = N - 1;
    16     
    17     while(i < j) {
    18         int temp;
    19         
    20         for(int k = 0;k <= N-1;++k) 
    21             swap(&a[i][k],&a[j][k]);
    22         
    23         ++i;
    24         --j;
    25     }
    26     
    27     /*对角线翻转*/
    28     for(int k = 0;k < N-1;++k) 
    29         for(i = k;i <= N-1;++i) 
    30             swap(&a[k][i],&a[i][k]);
    31 }
    32 
    33 int main() {
    34     int a[N][N] = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
    35     xuanzhuan(a);//传参时,只写二维数组的基地址,不要带括号 
    36     for(int i = 0;i<N;++i) {
    37         for(int j = 0;j<N;++j) {
    38             printf("%2d ",a[i][j]);
    39         }
    40         printf("
    ");
    41     }
    42     
    43     
    44     return 0;
    45 }

  • 相关阅读:
    开发day7
    开发day6
    开发day5
    开发day4
    开发day3
    开发day2
    开发day1
    假期学习2/8
    什么是栈帧
    JDK、JRE和JVM到底是什么
  • 原文地址:https://www.cnblogs.com/joyeehe/p/7994080.html
Copyright © 2011-2022 走看看