卡了我一年了,这个问题
查看原帖
卡了我一年了,这个问题
746919
lihuadai楼主2023/10/19 23:02
#include<bits/stdc++.h> 
using namespace std;
char m[12][12];
int f[3],c[3],s1,s2;
void move(int x,int y,int mi,int h){
	if (mi==0){
		if (m[x-1][y]=='*') if (h==0) f[0]=1; else c[0]=1;
		else if (h==0) {f[1]--;s1++;} else{ c[1]--;s2++;}
	}else if (mi==1){
		if (m[x][y+1]=='*') if (h==0) f[0]=2; else c[0]=2;
		else if (h==0) {f[2]++;s1++;} else { c[2]++;s2++;}
	}else if (mi==2){
		if (m[x+1][y]=='*') if (h==0) f[0]=3; else c[0]=3;
		else if (h==0) {f[1]++;s1++;} else {c[1]++;s2++;}
	}else{
		if (m[x][y-1]=='*') if (h==0) f[0]=0; else c[0]=0;
		else if (h==0) {f[2]--;s1++;} else {c[2]--;s2++;}
	}
}
  int main()
{int ans; 
for(int i=0;i<12;i++)
{m[i][0]='*',m[i][11]='*',m[0][i]='*',m[11][i]='*';
}
for(int i=1;i<11;i++)
   for (int j=1;j<=10;j++)
{	cin>>m[i][j];
    	if (m[i][j]=='F') f[1]=i,f[2]=j;
    	if (m[i][j]=='C') c[1]=i,c[2]=j;
}
while(1){
	if (f[1]==c[1]&&f[2]==c[2]) break;
	if(s1>400&&s2>400){
	ans=0;break;}
	  move(f[1],f[2],f[0],0);
		move(c[1],c[2],c[0],1);
ans++;	
}
cout<<ans;
return 0;
	
}

第一个问题为什么人和牛步数超过400就是不会相遇,我是真不理解,10*10=100,是什么意思。 第二个问题还有,特征值怎么搞出来的,这个特征值设为 farmer.x+farmer.y∗10+cow.x∗100+cow.y∗1000+farmer.facing∗10000+cow.facing∗40000

2023/10/19 23:02
加载中...