当前位置:网站首页>#6898 变幻的矩阵 题解
#6898 变幻的矩阵 题解
2022-07-29 05:24:00 【C2024XSC249】
变幻的矩阵
2021.8.13 二维数组定时练习1 C题
该题是比较简单的二维数组的题目:
第一步:输入a、b数组及n
定义a、b数组
char a[MAXN][MAXN], b[MAXN][MAXN];
其中, M A X N MAXN MAXN为常量
输入 a 、 b a、b a、b数组及 n n n的值即可,用两个 f o r for for循环嵌套即可
第二步:将前3种方法的数组创建,并按要求赋值
char a1[MAXN][MAXN], a2[MAXN][MAXN], a3[MAXN][MAXN];
a 1 a1 a1, a 2 a2 a2, a 3 a3 a3是三种不同的情况。
1、按照顺时针方向旋转90°
1 2 3 7 4 1
4 5 6 变幻为 8 5 2
7 8 9 9 6 3
定义的 a 1 a1 a1数组是第一种情况的数组
我们观察原数组 a a a中第二项a[1][2]在 a 1 a1 a1数组中的位置
a[1][2]:由 i = 1 , j = 2 i=1,j=2 i=1,j=2变为 i = 2 , j = 3 ( n − i + 1 ) i=2,j=3(n-i+1) i=2,j=3(n−i+1)
说明 a 1 i = a j , a 1 j = n − a i + 1 a1_i=a_j,a1_j=n-a_i+1 a1i=aj,a1j=n−ai+1
代码如下:
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) {
a1[j][n - i + 1] = a[i][j];
}
}
2、按照逆时针方向旋转90°
1 2 3 3 6 9
4 5 6 变幻为 2 5 8
7 8 9 1 4 7
定义的 a 2 a2 a2数组是第二种情况的数组
我们观察原数组 a a a中第二项a[1][2]在 a 2 a2 a2数组中的位置
a[1][2]:由 i = 1 , j = 2 i=1,j=2 i=1,j=2变为 i = 2 , j = 1 i=2,j=1 i=2,j=1
说明 a 1 i = n − a j + 1 , a 1 j = a i a1_i=n-a_j+1,a1_j=a_i a1i=n−aj+1,a1j=ai
代码如下:
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) {
a1[n - j + 1][i] = a[i][j];
}
}
3、中心对称互换
1 2 3 9 8 7
4 5 6 变幻为 6 5 4
7 8 9 3 2 1
定义的 a 3 a3 a3数组是第三种情况的数组
我们观察原数组 a a a中第二项a[1][2]在 a 3 a3 a3数组中的位置
a[1][2]:由 i = 1 , j = 2 i=1,j=2 i=1,j=2变为 i = 3 , j = 2 ( n − i + 1 ) i=3,j=2(n-i+1) i=3,j=2(n−i+1)
说明 a 1 i = n − a i + 1 , a 1 j = n − a j + 1 a1_i=n-a_i+1,a1_j=n-a_j+1 a1i=n−ai+1,a1j=n−aj+1
也就是说, a 3 a3 a3数组是倒放的 a a a数组
代码如下:
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) {
a1[n - i + 1][n - j + 1] = a[i][j];
}
}
第三步:判断并输出
这里为了结构清晰,节省代码,我们定义一个 t w o c m p twocmp twocmp(二维数组比较函数)来判断
1、twocmp函数
函数头
重点:函数内传入二维数组的方法
通常,我们定义函数时,会在参数列表中传入数组
传入一维数组的方式是:int a[],不用给定长度
但是,传入二维数组需要规定数组长度。例如:
bool twocmp (int a[][]) {
//错误,数组a未给定长度
XXX;
}
bool twocmp (int a[MAXN][MAXN]) {
//正确,已给定长度为常数MAXN
XXX;
}
函数里
t w o c m p twocmp twocmp函数的原理就是统计两个数组的重叠个数是否与总个数相等。
首先定义计数变量 t o t tot tot并赋初值0. int tot = 0;
再用 f o r for for循环遍历两个数组,若两个数相等, t o t tot tot增加1.
最后,判断 t o t tot tot和总个数是否相等
代码如下:
bool twocmp (char c[MAXN][MAXN], char d[MAXN][MAXN], int n) {
int tot = 0;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) {
if (c[i][j] == d[i][j]) {
tot ++;
}
}
}
return tot == n * n;
}
2、调用twocmp函数
依次和5个条件判断,并输出即可。
最后一点
想要全代码?没门
最后说一句:抄袭无用
感谢观看
边栏推荐
猜你喜欢

FPGA based: multi-target motion detection (hand-in-hand teaching ①)

Jingwei Qili: development of heart rate and blood oxygen module based on hmep060 (1: FPGA sends multi bit instructions)

ABSA1: Attentional Encoder Network for Targeted Sentiment Classification

抽象封装继承多态

扬尘噪声监控系统

简洁代码实现pdf转word文档

SimpleFOC调参2-速度、位置控制

Ml4 self study notes

智能货架安全监测系统

多线程和并发
随机推荐
STM32FF030 替代国产单片机——DP32G030
数学建模心得
QT learning notes - Import and export of Excel
【软件工程之美 - 专栏笔记】30 | 用好源代码管理工具,让你的协作更高效
抽象类以及接口
FPGA based: moving target detection (schematic + source code + hardware selection, available)
智慧能源管理系统解决方案
FPGA based: multi-target motion detection (hand-in-hand teaching ①)
NOI Online 2022普及组 题解&个人领悟
【软件工程之美 - 专栏笔记】16 | 怎样才能写好项目文档?
噪音监测传感系统
倾角传感器用于通信铁塔、高压电塔长期监测
HAL库学习笔记- 8 串口通信之使用
八大排序----------------冒泡排序
基于msp430f2491的proteus仿真(实现流水灯)
传统模型预测控制轨迹跟踪——波浪形轨迹(功能包已经更新)
【软件工程之美 - 专栏笔记】21 | 架构设计:普通程序员也能实现复杂系统?
兼容cc1101/cmt2300-DP4301 SUB-1G 无线收发芯片
ABSA1: Attentional Encoder Network for Targeted Sentiment Classification
Model building in pytorch