专栏文章
题解:P14358 [CSP-J 2025] 座位 / seat(民间数据)
P14358题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minfpd17
- 此快照首次捕获于
- 2025/12/02 01:39 3 个月前
- 此快照最后确认于
- 2025/12/02 01:39 3 个月前
这道题可以用二维坐标做,比往年第二题简单。
思路/代码
我的思路就是先输入,然后排序,接下来使用递归函数,最后构造函数。
主函数
依照题意,首先输入 ,接下来先输入 再把 存在 ,然后循环输入,注意要从第2个开始,最后排序、进入函数。
CPPint main(){
cin>>n>>m;
cin>>a[1];
w=a[1];
for(int i=2;i<=n*m;i++){
cin>>a[i];
}
sort(a+1,a+n*m+1,cmp);
dfs(1,1,1);
return 0;
}
cmp排序函数
正常方式,bool类型。
CPPbool cmp(int a,int b){
return a>b;
}
boos dfs(取名而已请不要弄混)
使用这个函数计算答案。
定义函数
是列数, 是行数, 是标记到了第几个成绩。
CPPvoid dfs(int x,int y,int u){
}
首先判断是否到达终点
是一定到达的第几个成绩,如果和小R的成绩相符那么就是到达了重点,输出坐标,结束函数。
CPP if(a[u]==w){
cout<<x<<" "<<y;
return ;
}
如果是向下的情况
如果是0,那么就代表向下,接下来是第一个判断,如果 再加一位已经离开考场,那么 不变 。 最后就是正常情况,直接往下来。
CPP if(ad==0){
if(y+1>n){
ad=1;
dfs(x+1,y,u+1);
}
else{
dfs(x,y+1,u+1);
}
}
如果是向上的情况
如果是1,那么就代表向上,接下来是第一个判断,如果 再减一位已经离开考场,那么 不变 。 最后就是正常情况,直接往上去。
CPP else if(ad==1){
if(y-1==0){
ad=0;
dfs(x+1,y,u+1);
}
else{
dfs(x,y-1,u+1);
}
}
函数总体代码
CPPvoid dfs(int x,int y,int u){
if(a[u]==w){
cout<<x<<" "<<y;
return ;
}
if(ad==0){
if(y+1>n){
ad=1;
dfs(x+1,y,u+1);
}
else{
dfs(x,y+1,u+1);
}
}
else if(ad==1){
if(y-1==0){
ad=0;
dfs(x+1,y,u+1);
}
else{
dfs(x,y-1,u+1);
}
}
}
摆上总体代码(精讲)
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,a[105],w;//定义n是行数,m是列数,a数组是每个人的成绩,w是记录小R的成绩。
bool ad;//记录方向0代表向下,1代表向上。
bool cmp(int a,int b){//排序函数
return a>b;//从大到小
}
void dfs(int x,int y,int u){//计算函数,x是列,y是行,u是到的第几个成绩。
if(a[u]==w){//如果答案正确
cout<<x<<" "<<y;//输出坐标
return ;//结束
}
if(ad==0){//如果向下
if(y+1>n){//如果到达底部
ad=1;//改为向上
dfs(x+1,y,u+1);//移动到下一列
}
else{//正常情况
dfs(x,y+1,u+1);//移动当下一行
}
}
else if(ad==1){//如果向上
if(y-1==0){//改为到达顶部
ad=0;//改为向下
dfs(x+1,y,u+1);//移动到下一列
}
else{//正常情况
dfs(x,y-1,u+1);//移动到上一行
}
}
}
int main(){
cin>>n>>m;//输入矩阵范围
cin>>a[1];//输入第一个
w=a[1];//把a[1]存在w里
for(int i=2;i<=n*m;i++){//从2开始到n*m
cin>>a[i];//输入接下来的成绩
}
sort(a+1,a+n*m+1,cmp);//从大到小排序
dfs(1,1,1);//进入函数
return 0;//结束程序
}
总结
水体希望今年大家成绩满意!
结束
请大家不要抄袭题解,遵守道德,大家要一起努力!
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...