當時看了這題就感覺so easy。。。 本來不想寫的,後來感覺是不是可以練一下搜尋水平。。
比賽時有人過了就沒寫。 比賽完了寫一下。
實現還不是那麼順利, 囧
本來自己以為這題能練下搜尋,其實dfs、bfs都沒用到,也許模擬中有點搜尋吧。
還是類似方格的東西把外圍也設定成未標記要好的多,做題多了也許就有這種感覺了吧。
還有自己忽略了驢 老虎前面是已經走過的路也可以轉彎。 bs!!
#include #include #include #include #include #define clr(x) memset(x, 0, sizeof(x))
using namespace std;
const int maxn = 1200;
int dv[maxn][maxn], tv[maxn][maxn];
int n, temp;
//碰到已經走過的點也會轉向 不僅是撞牆時。
int main()
dv[a1][b1] = 1; tv[a2][b2] = 1;
while(true)
else if(!dv[a1+1][b1])
}else if(c1 == 1) //south
else if(!dv[a1][b1-1])
}else if(c1 == 2) //west
else if(!dv[a1-1][b1])
}else if(c1 == 3) //north
else if(!dv[a1][b1+1])
}if(c2 == 0) // east
else if(!tv[a2-1][b2])
}else if(c2 == 1) //south
else if(!tv[a2][b2+1])
}else if(c2 == 2) //west
else if(!tv[a2+1][b2])
}else if(c2 == 3) //north
else if(!tv[a2][b2-1])
}if(ok1 == 0 && ok2 == 0)
}if(ans == -1) printf("-1\n");
else printf("%d %d\n", a1-1, b1-1);
}return 0;
}
自己要是想縮短**長度其實可以設個函式。
再看看thu的**。。 有 1 -1 0 0 這種東西。。
#include#include#include#include#includeusing namespace std;
const int max_n = 1000 + 10;
int n;
//e,s,w,n
int dx[4] = , dy[4] = ;
struct walker
bool check(int r, int c)
void walk()
d = (d + turn) % 4;
if (check(x + dx[d], y + dy[d]))
active = false; //dead >_<
return;
end:
vis[x][y] = true;
}};walker a, b;
int main()
if (a.active)
if (b.active)
}cout << -1 << endl;
end: }}
hdu 杭電2074 疊筐
problem description 需要的時候,就把乙個個大小差一圈的筐疊上去,使得從上往下看時,邊筐花色交錯。這個工作現在要讓計算機來完成,得看你的了。input 輸入是乙個個的三元組,分別是,外筐尺寸n n為滿足0 output 輸出疊在一起的筐圖案,中心花色與外筐花色字元從內層起交錯相疊,...
hdu 杭電 1728 逃離迷宮
題意 m n m行,n列 的迷宮,給你兩個座標a x1,y1 b x2,y2 從a b轉過的最少彎數是否滿足條件 滿足輸出 yes 否輸出 no 解法 廣搜,特別注意 走過的點絕不可以標記,原因 很多人說用優先佇列,但這題只要你標記了即使用優先佇列還是不行,原因 假設1轉彎數為5方向向右,2的轉彎數...
HDU 杭電 2059 龜兔賽跑
龜兔賽跑 problem description 據說在很久很久以前,可憐的兔子經歷了人生中最大的打擊 賽跑輸給烏龜後,心中鬱悶,發誓要報仇雪恨,於是躲進了杭州下沙某農業園臥薪嘗膽潛心修煉,終於練成了絕技,能夠毫不休息得以恆定的速度 vr m s 一直跑。兔子一直想找機會好好得教訓一下烏龜,以雪前恥...