为啥我把o2关了就AC了?
查看原帖
为啥我把o2关了就AC了?
1208645
sunwenjun12345楼主2025/1/28 17:19

为啥我把o2关了就AC了?开o2反而超时了?
代码:

#include<bits/stdc++.h>
using namespace std;

char mp[12][12];

struct dot{
	int x,y;
};
dot human,cow;
int hp=1,cp=1;
dot direct[5]={{0,0},{0,-1},{1,0},{0,1},{-1,0}};

bool walk(dot d,int dirp,char zf){
	dot dir=direct[dirp];
	if(mp[d.x+dir.x][d.y+dir.y]!='*'){
		mp[d.x][d.y]='.';
		mp[d.x+dir.x][d.y+dir.y]=zf;
		if(zf=='F'){
			human.x+=dir.x;
			human.y+=dir.y;
		}else{
			cow.x+=dir.x;
			cow.y+=dir.y;			
		}
		return 1;
	}else{
		if(zf=='F'){
			hp+=1;
			if(hp>4)hp=1;
		}else{
			cp+=1;
			if(cp>4)cp=1;			
		}
	}
}

int main()
{
	
	for(int i=0;i<=11;i++){
		for(int j=0;j<=11;j++){
			if(i==0||j==0||i==11||j==11){
				mp[j][i]='*';
				continue;
			}
			cin>>mp[j][i];
			if(mp[j][i]=='F'){
				human.x=j;
				human.y=i;
			}
			if(mp[j][i]=='C'){
				cow.x=j;
				cow.y=i;
			}
		}
	}
	int time=0,df=10000;
	while(df--){
		time++;
		//human
		walk(human,hp,'F');
		//cow
		walk(cow,cp,'C');
		if(human.x==cow.x&&human.y==cow.y){
			cout<<time;
			return 0;
		}
	}
	cout<<0;
	return 0;
}
2025/1/28 17:19
加载中...