以前的一道題目,現在拿到總覺得是dfs,然後t掉就沒什麼想法了,很狗的看了以前的寫法(以前還是看題解的ac的),是bfs,每次都要轉彎,但是之前你的達到一種他走到了死路,所以才是不得不轉彎,寫法也是非常棒,預處理的轉彎數是-1就可以達到一開始轉彎的+1抵消。
dfs寫法:
中間判斷兩個條件,如果是起點,不是起點,然後剪枝的話,就是有flag直接return,還有那個點不行也return,主要是轉彎數不行或者點不是都要return。
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
typedef
long
long ll;
#define pi acos(-1.0)
const
int n=1e2+10;
bool vis[n][n];
int n,m;
char ma[n][n];
int sx,sy;
int ex,ey;
int k;
int dx[4]=;
int dy[4]=;
int flag;
struct asd;
bool judge(int x,int y)
queue
q;void bfs()
asd now,ne;
now.x=sx;now.y=sy;
now.num=-1;
vis[now.x][now.y]=1;
q.push(now);
while(!q.empty())
q.push(ne);
}ne.x+=dx[i];
ne.y+=dy[i];}}
}}int main()
return
0;}
dfs寫法
#include
using
namespace
std;
typedef
long
long ll;
typedef
unsigned
long
long ull;
typedef pair pi;
typedef pair< pi, int> pii;
const
double eps=1e-5;
const
double pi=acos(-1.0);
const
int mod=1e9+7;
const
int inf=0x3f3f3f3f;
const
int n=110;
char ma[n][n];
int vis[n][n];
int n,m,num;
int sx,sy,tx,ty,flag;
int dx[4]=;
int dy[4]=;
void dfs(int x,int y,int d)
for(i=0;i<4;i++)
dfs(xx,yy,i);
}}int main()
scanf("%d%d%d%d%d",&num,&sy,&sx,&ty,&tx);
sy--;sx--;tx--;ty--;
flag=0;
memset(vis,1,sizeof(vis));
vis[sx][sy]=0;
dfs(sx,sy,-1);
if(flag) printf("yes\n");
else
printf("no\n");
}return
0;}
flume兩種寫法
1.全寫 bin flume ng agent conf conf name a1 conf file job flume netcat logger.conf dflume.root.logger info,console 2.簡寫 bin flume ng agent n a1 c conf f...
氣泡排序的兩種寫法
public static void main string args function1 a function2 a public static void function1 int a system.out.println system.out.println 第 i 1 次迴圈完成 syste...
全排列的兩種寫法
對於陣列 1,2,3 他們按照從小到大的全排列是 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 現在給你乙個正整數n,n小於8,輸出陣列 1,2,n 的從小到大的全排列。由出口遞迴回溯時,至少返回2層,第一次因為if語句,第二次因為不滿足for迴圈條件 include in...