将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。

解题思路: 将二维数组当做一维数组进行处理比较方便,而二维数组本身就是扁平化存储,所以直接使用首地址即可。

先遍历找到最大值,将其与中间数字交换,而中间数字的下标就是数字总数除以2;

其次寻找四次最小值,每次寻找的时候将最小值的下标记录起来,前提是这个数字如果已经是选中的最小数字之一,则需要跳过,也就是只跟剩余的数字作比较。(第二次开始遍历找最小数字的时候,千万不能与第一个最小数进行比较,否则永远都只有一个最小数)。

答案:

#include <stdio.h>
#include <string.h>
void transform(int *arry, int col_row)
{//找到最大值int max = arry[0], max_idx;for (int i = 0; i < col_row * col_row; i++) {if (max < arry[i]) max = arry[i];//找出最大数max_idx = i;}//行列相乘得到总数量,除以2后加1则为中心点(暂时不考虑偶数的情况)int center_idx = (col_row * col_row) / 2;int tmp = arry[cen ter_idx]; arry[center_idx] = arry[max_idx]; arry[max_idx] = tmp;//找到四个最小值int min_idx[4];for (int i = 0; i < 4; i++) {//循环4次获取到最小值int min_tmp = arry[col_row * col_row - 1];for (int j = 0; j < col_row * col_row; j++) {//遍历所有数据,逐个比较获取最小值int k = 0;for (; k < i; k++) {//但是要注意如果某个下标的数据已经是获取过的最小值,则不能进行判断(因为这个肯定是最小的)if (j == min_idx[k]) break;}if (k != i) { continue; }//k和i不同表示j这个坐标已经是找到的最小的几个数字之一,则找下一个判断if (min_tmp > arry[j]) { // 相当于在剩下的数中找到最小的那个数字min_tmp = arry[j];min_idx[i] = j; //并且记录这个数字的位置}}}int change_idx[4];//先计算四个角的下标,便于后边进行交换change_idx[0] = 0;//第一个要置换的数据的下标,也就是左上角change_idx[1] = col_row - 1;//第二个要置换的数据的下标,也就是右上角change_idx[2] = col_row * (col_row - 1);//第一个要置换的数据的下标,也就是左下角change_idx[3] = (col_row * col_row) - 1;//第一个要置换的数据的下标,也就是右下角for (int i = 0; i < 4; i++) {int tmp = arry[change_idx[i]]; arry[change_idx[i]] = arry[min_idx[i]]; arry[min_idx[i]] = tmp;}return ;
}
int main()
{int arry[5][5];printf("Please enter a 5x5 matrix: \n");for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {scanf_s("%d", &arry[i][j]);} }transform(*arry, 5);//将二维数组当做一维数组传入处理,并且传入行列数printf("\n");for (int i = 0; i < 5; i++) {for (int j = 0; j < 5; j++) {printf("%d ", arry[i][j]);}printf("\n");}system("pause");return 0;
}

将一个5x5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用相关推荐

  1. 将一个5X5的矩阵中最大的元素放在中心, 4个角分别放4个最小的元素(顺序为从左到右,从上到下,从小到大存放)其余数字从小到大

    将一个5X5的矩阵中最大的元素放在中心, 4个角分别放4个最小的元素(顺序为从左到右,从上到下,从小到大存放) 其余数字从小到大 在以前的要求上更改了一下,其余数字从小到大排序 #include &l ...

  2. leetcode —— 面试题12. 矩阵中的路径

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再 ...

  3. 不支持给定路径的格式_剑指offer_12_矩阵中的路径

    //面试题12.矩阵中的路径 //题目:请设计一个函数,用来判断在一个矩阵中,是否存在一条包含某字符串所有字符的路径. //路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如 ...

  4. 剑指Offer对答如流系列 - 矩阵中的路径

    文章目录 面试题11:矩阵中的路径 一.题目描述 二.问题分析 三.实现 四.探讨 解空间 (1)子集树 (2)排列树 面试题11:矩阵中的路径 一.题目描述 请设计一个函数,用来判断在一个矩阵中是否 ...

  5. 剑指offer:面试题12. 矩阵中的路径

    题目:矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一 ...

  6. 回溯法模板(矩阵中操作)

    在矩阵中考察回溯算法,分为任意起点.左上角开始等情况.从而有不同的模板,其实区别就是直接开始还是每个坐标都去尝试. 目录 1.首先是从左上角开始这种情况 C++代码 2.从矩阵任意一点开始的情况 C+ ...

  7. 《剑指offer》-- 回溯法:矩阵中的路径、机器人的运动范围

    一.矩阵中的路径 1.题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子. ...

  8. 剑指offer之矩阵中的路径

    题目描述: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...

  9. 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)

    1. 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...

  10. 【剑指offer】面试题12:矩阵中的路径(Java)

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再 ...

最新文章

  1. 综合素质计算机能力,教资统考中学《综合素质》:信息处理能力(一)
  2. Quick BI 的模型设计与生成SQL原理剖析
  3. 给Android程序员的六个建议
  4. 程序设计竞赛算法基础考试真题2020年(回忆版)
  5. AppBoxFuture(四). 随需而变-Online Schema Change
  6. Xamarin Mono for VS开发窗体标题(Title)乱码解决方案
  7. 鸿蒙微内核游戏,华为鸿蒙微内核
  8. 攻击需要成本吗_石子厂成本大概多少?开一个石子厂都需要哪些设备,价格高吗 ?...
  9. [转载] python字符串转有符号数字_在python中将字符串转换为8位带符号整数
  10. nyoj--20-吝啬的国度
  11. 《树莓派开发实战(第2版)》——1.2 封装树莓派
  12. redis雪崩击穿穿透
  13. Excel函数应用(3)--筛选随机数
  14. 360能删除mysql吗_如何把Mysql卸载干净(亲测有效)
  15. Linux cat命令
  16. pc banner图 自适应 图片不变型
  17. 解决百度上传WebUploader在IE浏览器下点击无反应的问题
  18. GitHub进行版本回退
  19. C++程序设计课程设计报告——自助点餐系统
  20. IDEA搭建一个SpringBoot项目——十分详细(web+mysql)

热门文章

  1. 在gitlab上使用动态gif作为自己的头像
  2. numpy.array()如何判断一个值是否在其中?
  3. vue 动态添加表单,新增表格
  4. 最全的2007年度流行语
  5. Caused by: org.springframework.amqp.AmqpException: No method found for class java.lang.String
  6. java5的特性,一叶望Java7之5特性
  7. 数据结构与算法(Python版)——(3)通俗易懂的介绍递归(上)
  8. allegro开店流程及费用,allegro开店入驻需要哪些条件
  9. 三面蚂蚁核心金融部,一文说清!
  10. 铂涛集团旗下长租公寓品牌窝趣完成近2亿元B轮融资