求调,代码与题解一样,结果不同
查看原帖
求调,代码与题解一样,结果不同
782917
RSWS楼主2024/10/20 09:07

不知道为啥思路和题解一样还有问题……,数组都换成结构体了,判断部分一样,但结果就是和题解不一样 附代码:

#include<iostream>
using namespace std;
struct wanju{   //玩具 
	int lw;     //玩具的编码(里外) 
	string na;//玩具的名字 
}x[100100];//设置大点免得超出数据 
struct zhiling{ // 指令 
	int lz;     //指令的编码(向左还是向右) 
	int s;    //移动几格 
}a[100100];
int m,n,xr=1;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>x[i].lw>>x[i].na;
	}
	for(int i=1;i<=m;i++){
		cin>>a[i].lz>>a[i].s;
	}
	for(int i=1;i<=m;i++){
		if(x[i].lw==a[i].lz){
			xr=xr-a[i].s;
			if(xr<=0){
				xr=xr+n;
			}
		}
		else{
			xr=xr+a[i].s;
			if(xr>n){
				xr=xr-n;
			}			
		}
	}
	cout<<x[xr].na<<endl;
	return 0;
} 

下面是我对照的题解:

#include<iostream>
using namespace std;
struct wanju{   //玩具 
	int lw;     //玩具的编码(里外) 
	string name;//玩具的名字 
}xr[100100];//设置大点免得超出数据 
struct zhiling{ // 指令 
	int lr;     //指令的编码(向左还是向右) 
	int cnt;    //移动几格 
}a[100100];
int m,n,x=1;
int main(){
	cin>>n>>m;//输入流 
	for(int i=1;i<=n;i++){
		cin>>xr[i].lw>>xr[i].name;
	}
	for(int i=1;i<=m;i++){
		cin>>a[i].lr>>a[i].cnt;
	}
	for(int i=1;i<=m;i++){//移动 
		if(xr[x].lw==a[i].lr){
			x=x-a[i].cnt;
			if(x<=0){
				x=n+x;
			}
		}else{
			x=x+a[i].cnt;
			if(x>n){
				x=x-n;
			}
		}
	}
	cout<<xr[x].name<<endl;//输出 
	return 0;
}

2024/10/20 09:07
加载中...