• 方阵形对角矩阵


    DB_Question

     

    解决:

      1、存

      2、验证

     1 #include <iostream>
     2 using namespace std;
     3 
     4 //将小矩阵的值转存在一维数组b中
     5 void TurnToB(int a[][16], int b[], int m, int t);
     6 //关键的存放算法
     7 void CoreStore(int b[], int x, int y, int val, int m);
     8 //验证i,j到k是否正确,具体检验k是否能输出
     9 void show(int b[], int i, int j, int m);
    10 
    11 int main()
    12 {
    13     int n = 16, m = 4, t = 4;//以16×16方阵为例
    14     int a[16][16];
    15     int b[64];//m*m*t
    16     //初始化特殊位置的值
    17     a[0][0] = 0, a[0][3] = 3, a[3][0] = 3;
    18     a[3][3] = 6, a[7][4] = 11, a[4][7] = 11;
    19     a[7][7] = 14, a[8][11] = 19, a[11][8] = 19;
    20     a[11][11] = 22, a[12][15] = 27, a[15][12] = 27;
    21     a[15][15] = 30, a[5][5] = 10, a[10][11] = 21;
    22     //-------------------------------------------
    23     TurnToB(a, b, m, t);
    24     //验证上一步算法的正确性
    25     show(b, 0, 0, m);
    26     show(b, 0, 3, m);
    27     show(b, 3, 0, m);
    28     show(b, 3, 3, m);
    29 
    30     show(b, 7, 4, m);
    31     show(b, 4, 7, m);
    32     show(b, 7, 7, m);
    33     show(b, 8, 11, m);
    34 
    35     show(b, 11, 8, m);
    36     show(b, 11, 11, m);
    37     show(b, 12, 15, m);
    38     show(b, 15, 12, m);
    39 
    40     show(b, 15, 15, m);
    41     show(b, 5, 5, m);
    42     show(b, 10, 11, m);
    43 
    44     return 0;
    45 }
    46 void TurnToB(int a[][16], int b[], int m, int t)
    47 {
    48     int x, y;
    49     for (int i = 0; i < m; i++)
    50     {
    51         for (int j = 0; j < m; j++)
    52         {
    53             for (int k = 0; k < t; k++)
    54             {
    55                 x = i + m*k;
    56                 y = j + m*k;
    57                 CoreStore(b, x, y, a[x][y], m);
    58             }
    59         }
    60     }
    61 }
    62 void CoreStore(int b[], int x, int y, int val, int m)
    63 {
    64     int loc = (x / m)*m*m + (x%m)*m + y - (x / m)*m;
    65     b[loc] = val;
    66 }
    67 void show(int b[], int i, int j, int m)
    68 {
    69     int loc = (i / m)*m*m + (i%m)*m + j - (i / m)*m;
    70     cout << "a[" << i << "][" << j << "]=b[" << loc << "]=" << b[loc] << endl;
    71 }
    View Code
  • 相关阅读:
    用于json的 .ashx 小细节
    (转)写让别人能读懂的代码
    Mvc 中ViewBag Model 查找不到解决
    Windows 2008 R2 配置 DNS 实现二级域名
    Windows Server 2008 DNS服务器安装与配置
    【iOS】swift init构造器
    【iOS】OC-UTC日期字符串格式化
    android使用sharesdk的小感
    【iOS】Swift GCD-下
    【iOS】Swift GCD-上
  • 原文地址:https://www.cnblogs.com/guoyujiang/p/11807433.html
Copyright © 2020-2023  润新知