每天,john都要為了農場裡n(1≤n≤10)頭牛的健康和幸福四處奔波。
每頭牛的位置可以描述為乙個二維座標,john從座標原點(0,0)出發。為了使路徑更有趣,john決定只沿著平行於座標軸的方向行走,這樣只能沿著東西南北方向運動。而且只有到達某頭牛的座標後john才會改變行走的方向(當然,如果有必要,john也會穿過某頭牛的座標而不改變行走的方向。)
如果john改變行走的方向,他會原地轉90°或者180°。john的路徑必須保證檢查完所有牛後返回原點。
john可以穿過某頭牛的座標而不改變方向任意次,請計算出有多少條路徑滿足john能檢查完n頭牛,在每頭牛的座標處恰好改變一次方向。同一條路徑從不同方向經過要計算兩次。
輸入格式:
第一行,整數n。
第2行到第n+1行,第i+1行是兩個用空格隔開的整數x和y,表示第i頭牛的座標(-1000 ≤x, y ≤1000)
輸出格式:
一行個整數,表示路徑的量如果沒有滿足要求則輸出 0。
輸入樣例#1:
40 12 1
2 02 -5
輸出樣例#1:
2
/*沒什麼難點,就幾個細節需要注意一下
乙個是dfs時需要記錄下上一次改變的方向
第二個是千萬不要忘了最後要返回(0,0)
*/#include
#include
#define maxn 11
using
namespace
std;
intn,ans;
bool
vis[maxn];
struct
nodea[maxn];
void dfs(int x,int y,int cnt,int pre)
if(x==0&&y<0&&pre!=1)
if(y==0&&x>0&&pre!=3)
if(y==0&&x<0&&pre!=4)
}for(int i=1;i<=n;i++)
if(a[i].x3)
if(a[i].x==x&&a[i].y2)
if(a[i].x==x&&a[i].y>y&&pre!=1)
}}int
main()
題解 P1556 幸福的路
傳送門 題的本質不難,大概也就黃題的水平,dfs即可。我是不會告訴你我提交了3次才ac 1 與當前的牛的x軸或y軸座標相等。2 需要轉彎才能到達。3 此前未經過。第乙個重點在於第二個條件,如何判斷是否存在轉彎?這裡使用乙個函式,通過對起始點和目標點的判斷,返回線路的方向 inline int dir...
洛谷 P1807最長路
設g為有n個頂點的有向無環圖,g中各頂點的編號為1到n,且當為g中的一條邊時有i j。設w i,j 為邊的長度,請設計演算法,計算圖g中 1,n 間的最長路徑。輸入格式 輸入檔案longest.in的第一行有兩個整數n和m,表示有n個頂點和m條邊,接下來m行中每行輸入3個整數a,b,v 表示從a點到...
洛谷P1768 天路
那是一條神奇的天路誒 把第乙個神犇送上天堂 xdm先生唱著這首 親切 的歌曲,一道猥瑣題目的靈感在腦中出現了。和c sunshine大神商量後,這道猥瑣的題目終於出現在本次試題上了,旨在難到一幫大腦不夠靈活的oier們 johnkram真的不是說你 言歸正傳,小x的夢中,他在 開了一家大型旅遊公司,...