当前位置: 首页 > news >正文

CFF第二题D34

CCF-CSP第34次认证第二题——矩阵重塑(其二)【需反复思考学习!!!】 - 技术栈

D34

这道题主要分类讨论的思想,顺便复习了一下(一)的思想

代码:

//矩阵重塑 int n,m,t; cin>>n>>m>>t; vector<vector<int>> ans(n, vector<int>(m)); //n*m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>ans[i][j]; } } while(t--){ int op,a,b; cin>>op>>a>>b; if(op==2){//转置 //int tmp; vector<vector<int>>ret(m,vector<int>(n));//格式 for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ ret[j][i]=ans[i][j]; //tmp=ans[i][j]; //ans[i][j]=ans[j][i]; //ans[j][i]=tmp; } } ans=ret; swap(n, m); } if(op==3){ cout<<ans[a][b]<<endl; } if(op==1){ vector<vector<int>> ret(a,vector<int>(b));//格式 for(int i=0;i<a;i++){ for(int j=0;j<b;j++){ int K=i*b+j; int ori_i=K/m; int ori_j=K%m; //K=i*m+j+1;K=I*M+J; ret[i][j]=ans[ori_i][ori_j]; } } // 修正3:更新原矩阵和维度,后续操作基于新矩阵 ans = ret; n = a; m = b; } }

运行结果:

复盘:

1.自己成功推导出来了一的那个公式,有进步

2.新学会了矩阵交换的写法:我还以为要手写两行for呢

ans = ret; n = a; m = b;

3.在矩阵置换那里犯了一个愚蠢的错误

if(op==2){//转置 int tmp; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ tmp=ans[i][j]; ans[i][j]=ans[j][i]; ans[j][i]=tmp; } } swap(n, m); }

一开始想用中间变量直接转置,还在洋洋得意,发现纯是大傻春了。两边转置又都转回去了

后面想着那就转上三角吧,结果发现又没说是方阵,没招了。

附:上三角矩阵转置,直接原地转就可以

if (op == 2) { // 方阵原地转置(核心逻辑) int tmp; // 仅用1个临时变量 // 遍历上三角区域:i < j,避免重复交换 for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { // 三步交换:仅用临时变量tmp tmp = ans[i][j]; ans[i][j] = ans[j][i]; ans[j][i] = tmp; } } cout << "方阵原地转置完成!" << endl; // 方阵转置后n=m不变,无需swap(n,m) }

以上完毕

http://www.jsqmd.com/news/461654/

相关文章:

  • Flutter 组件 data_serializer 适配鸿蒙 HarmonyOS 实战:高性能数据序列化,构建强类型映射与持久化治理架构
  • Claude Code 从 0 到 1 快速上手
  • 【开源实战】用 Java 21 + Swing 打造 Scrcpy 可视化工具
  • 基于蒙特卡洛模拟法的风光场景生成与削减:探索新能源领域的神奇代码之旅
  • 力扣解题-637. 二叉树的层平均值
  • Semantic Kernel:让 .NET 应用轻松“对话”大模型
  • 2026年河北靠谱的高压风水管生产厂家推荐与选购指南 - myqiye
  • 飞迪航空发布新一代猎户座战略级导航计算机
  • 照着用就行:8个AI论文平台深度测评,专科生毕业论文写作全攻略
  • 数据高效大模型后训练
  • C#如何获取CAD的对象并修改
  • Playwright MCP浏览器自动化指南原创
  • 小型油脂精炼设备价格多少,为你揭秘个性化定制厂家行情 - 工业推荐榜
  • 一行 instanceof 干掉“先判后转”!JDK 16+ 模式匹配让类型检查优雅到飞起
  • 基于Kriging元模型的虚拟电厂能量管理与动态定价策略研究:一种主从博弈均衡算法的实践与应用
  • matlab随机车流模拟程序 车辆荷载模拟 参数包括车型,车重,车道,车距,抽样方法是蒙特卡洛...
  • 计算机毕业设计springboot个人博客系统 基于SpringBoot的在线博客内容发布与管理平台 基于Java的个人网络日志系统设计与开发
  • 水性分散剂:哪家强且优?
  • GPU算力租赁火了!中小企业低成本玩转AI
  • Win11输入法如何还原到任务栏显示
  • 一文读懂:充电器充电线混用指南(数据线vs充电线、快充原理、手机笔记本等安全且健康的充电方式)
  • Matlab排列熵程序详解:含注释,轻松掌握算法逻辑
  • 外部切面不需要什么前置通知、后置通知、异常通知和环绕通知,只需提供一个同名方法就可以了。之所以可以这么简洁,是因为使用了洋葱圈模型。 ...
  • 汇率接口api实时获取人民币及多币种行情数据
  • 观测通道锁定的连续动力学:基于MHCR的量子测量量化模型
  • 一键暂停更新,轻松掌控电脑节奏
  • Windows 绿色软件部署指南:从压缩包到开始菜单
  • MPK(Mirage Persistent Kernel)源码笔记()--- 多层结构化图模型
  • 一次误删差点让创业公司停摆?这家团队靠「松鼠备份」30秒救回核心代码
  • 用 OpenClaw 实现小红书自动发帖