请各位大佬帮我看看我那错了!
查看原帖
请各位大佬帮我看看我那错了!
1365344
huangruize楼主2024/7/17 21:17
#include<bits/stdc++.h>
using namespace std;
const int N=10000;
typedef long long ll;
int h,w,f; 
char a[N][N];
int dx[8]={0,1,0,-1,1,-1,1,-1};
int dy[8]={1,0,-1,0,-1,1,-1,1};
map<char,int>mp;
void dfs(int x,int y,int k,int d,int st){
	if(a[x][y]=='e'&&st==5){
		f=1;
		return;
	}
	int nx=x+dx[d];
	int ny=y+dy[d];
	if(nx>=1&&nx<=h&&ny>=1&&ny<=w&&mp[a[nx][ny]]==k+1){
		dfs(nx,ny,k+1,d,st+1);
	}
	return;
}
int main (){
	mp['s']=1;
	mp['n']=2;
	mp['u']=3;
	mp['k']=4;
	mp['e']=5;
	cin>>h>>w;
	for(int i=1;i<=h;i++){
		for(int j=1;j<=w;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=h;i++){
		for(int j=1;j<=w;j++){
			if(a[i][j]=='s'){
				for(int l=0;l<8;l++){
					f=0;
					dfs(i,j,1,l,1);
					if(f==1){
						int ax=i;
						int ay=j;
						for(int r=1;r<=5;r++){
							cout<<ax<<" "<<ay<<endl;
							ax+=dx[l];
							ay+=dy[l];
						}
					}
				}
			}
		}
	}
    return 0;
}

2024/7/17 21:17
加载中...