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

C++题解(36) 2025年顺德区中小学生程序设计展示活动(初中组C++)换位(二)

题目背景

【题干与《换位(一)》基本一致,仅增加了“位对换”指令,对应输入格式、样例、数据范围也有所不同】

【2025.5.12 数据已加强】

题目描述

小明班上是n行m列的座位排列,座位按照行列顺序编号,如6行7列,那么第1行第1列座位号为1号、第1行第7列为7号、第3行第4列为18号,如此递推。

现在期中考刚结束要进行全班换座位。班主任刚刚公布了换位指令,指令一共z条且只有以下几类:

①行对换;

②列对换;

③位对换。

请你根据换位指令找到换位结束后第x行第y列的原座位号。

输入格式

第1行为三个整数,分别为n、m、z,以空格隔开,整数含义如题所示。

第2至z+1行有三个或者五个整数,分别为a、b、c或a、b、c、e、f。若a为1,则将bc行对换;若a为2,则将bc列对换;若a为3,则将b行c列与e行f列的位置对换。

最后1行有两个整数,分别为x和y,整数含义如题所示。

输出格式

输出1行,输出第x行第y列的原座位号。

输入输出样例

输入 #1

5 5 3
1 1 2
2 3 1
3 1 1 1 2
1 2

输出 #1

8

说明/提示

样例解析

5行5列的座位,先将12行互换,再将31列互换,最后把(1,1)和(1,2)互换,得出最终(1,2)的原座位号为8。

数据范围

对于100%的数据:4999≤n,m≤5000,z=100000。

参考答案

#include <iostream>
using namespace std;
int main() 
{int n,m,z,x,y;int p[5001],q[5001],a,b,c,e,f;cin>>n>>m>>z;for(int i=1;i<=n;i++) p[i]=i;for(int i=1;i<=m;i++) q[i]=i;int xy[n+1][m+1];int l=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){xy[i][j]=(i-1)*m+j;	}}for(int i=1;i<=z;i++){cin>>a;if(a==1||a==2){cin>>b>>c;if(a==1)swap(p[b],p[c]);else swap(q[b],q[c]);}else{cin>>b>>c>>e>>f;int i1=p[b],j1=q[c];int i2=p[e],j2=q[f];swap(xy[i1][j1],xy[i2][j2]);}}cin>>x>>y;int row=p[x];int col=q[y];cout<<xy[row][col];return 0;
}
http://www.lryc.cn/news/570716.html

相关文章:

  • 如何在ubuntu上安装flash_player
  • 本地安装discuz x2.5(论坛站)程序
  • BackTrack5(BT5)各版本下载
  • cd linux 镜像,解开 CDLinux 的iso映像文件
  • 战争
  • C语言空指针异常在Java中的解决方案
  • 各大搜索引擎网站提交入口
  • csdn博客登录不上-why?
  • mysql bulk update_Django bulk_create()、update()与数据库事务的效率对比分析
  • 超标量处理器设计9-执行
  • emule最新服务器地址,emule 国内服务器(最新emule服务器)
  • 关于2000W数据
  • 文件或目录损坏且无法读取怎么修复
  • Struts2中Action通配符的配置
  • [转]Linux下安装搜狗拼音输入法
  • 汇川SV660F伺服驱动器通过EtherCAT主站转Profinet网关接入到profinet系统
  • Qwen2.5-VL 是什么?
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月15日第109弹
  • Linux下的优秀开源软件
  • css属性:图片使用filter属性使得position: fixed失效的情况
  • 如何使用github并且参与别人的开源项目
  • 用 Redis 都能实现哪些功能?这2万字+20张图给分析全了
  • WiFi基本知识
  • Nginx工作原理和优化总结。
  • 小程序开发实用技巧——扩展 Page 页面对象
  • 数据库的脏读,幻读,幻行的原理及解决方式
  • 125. 验证回文串
  • 学习信号量 sem_init、sem_destroy、sem_post、sem_wait、sem_trywait、sem_getvalue
  • Android-常用基本控件
  • Linux禁用CTRL+ALT+DEL重启系统