60分求助wa3,5两点

P2689 东南西北

#include<iostream> #include<cstdio> #include<cstring> using namespace std; int x1,y1,x2,y2,n,sum=2e9,num[55]; int dx[5]={0,1,-1,0,0}; int dy[5]={0,0,0,-1,1}; char d[55][2]; void dfs(int x,int y,int ans,int i) { if(x==x2&&y==y2) { sum=min(sum,ans); return; } if(i>n)return; dfs(x,y,ans,i+1); dfs(x+dx[num[i]],y+dy[num[i]],ans+1,i+1); } int main() { cin>>x1>>y1>>x2>>y2>>n; for(int i=1;i<=n;i++){ cin >> d[i]; if(d[i][0]=='N')num[i]=4; if(d[i][0]=='S')num[i]=3; if(d[i][0]=='W')num[i]=2; if(d[i][0]=='E')num[i]=1; } dfs(x1,y1,0,1); if(sum<2e9)cout<<sum; else cout<<-1; }
by 只手摘星辰 @ 2019-08-01 19:43:56


希望更丰富的展现?使用Markdown
by zhjzhmh @ 2019-08-28 17:38:26


```cpp #include<bits/stdc++.h> using namespace std; int x1,y3,x2,y2,n,sum=2e9,num[55]; int dx[5]={0,1,-1,0,0}; int dy[5]={0,0,0,-1,1}; char d[55][2]; void dfs(int x,int y,int ans,int i) { if(x==x2&&y==y2) {sum=min(sum,ans);return;} if(i>n)return; dfs(x,y,ans,i+1); dfs(x+dx[num[i]],y+dy[num[i]],ans+1,i+1); } int main() { cin>>x1>>y3>>x2>>y2>>n; for(int i=1;i<=n;i++) { cin>>d[i]; if(d[i][0]=='N') num[i]=4; if(d[i][0]=='S') num[i]=3; if(d[i][0]=='W') num[i]=2; if(d[i][0]=='E') num[i]=1; } dfs(x1,y3,0,1); if(sum<2e9)cout<<sum; else cout<<-1; } ``` 大善人路过
by Hoks @ 2022-01-23 11:40:59


|