洛谷P1556 幸福的路

2022-04-02 01:07:50 字數 1135 閱讀 5291

每天,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:

4

0 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的夢中,他在 開了一家大型旅遊公司,...