矩阵的变幻(旋转,转置,翻转,对角线,反对角线)
旋转
顺时针旋转90°(逆时针旋转270°)
点击查看代码
void rotate_90(){ //所有矩阵适用
swap(n,m); //注意行列已互换
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[m+1-j][i]; //注意m与j匹配
}
}
for(int i = 1; i <= n; i ++ ){ //粘贴到原矩阵
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
旋转180°(顺逆一致)
点击查看代码
void rotate_180(){
for(int i = 1; i <= n; i ++ ){ //行列不互换
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[n+1-i][m+1-j]; //注意n与i匹配,m与j匹配
}
}
for(int i = 1; i <= n; i ++ ){ //粘贴到原矩阵
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
顺时针旋转270°(逆时针旋转90°)
点击查看代码
void rotate_270(){
swap(n,m); //注意行列已互换
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[j][n+1-i]; //n-i
}
}
for(int i = 1; i <= n; i ++ ){ //粘贴到原矩阵
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
转置
点击查看代码
void transpose(){
swap(n,m); //行列互换
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[j][i];
}
}
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
翻转
上下翻转
点击查看代码
void flip_up_down(){
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[n+1-i][j];
}
}
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
左右翻转
点击查看代码
void flip_left_right(){
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
b[i][j] = a[i][m+1-j];
}
}
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= m; j ++ ){
a[i][j] = b[i][j];
}
}
}
对角线翻转【相当于方阵的转置】
注意:只有方阵才有对角线
点击查看代码
void flip_diagonal(){
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= n; j ++ ){
b[i][j] = a[j][i];
}
}
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= n; j ++ ){
a[i][j] = b[i][j];
}
}
}
反对角线翻转
点击查看代码
void flip_opp_diagonal(){
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= n; j ++ ){
b[i][j] = a[n+1-j][n+1-i];
}
}
for(int i = 1; i <= n; i ++ ){
for(int j = 1; j <= n; j ++ ){
a[i][j] = b[i][j];
}
}
}
分类:
矩阵
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探