1. 程式人生 > >(PAT乙級)1065 單身狗(C語言實現)

(PAT乙級)1065 單身狗(C語言實現)

總結:

1、我最初的想法是一遍遍去遍歷,但其實自己心裡也清楚這樣迴圈層數多,容易執行超時,所以以下思路借鑑柳婼小姐姐。

思路:定義情侶陣列couple[ ]={-1},每個人對應的編號的陣列儲存自己情侶的編號。這樣有情侶的人對應的初值不再是-1,其他對應值仍是-1的編號即為單身狗。再定義一個數組isExist[ ]={0}來表示自己的物件是否參加派對。用guest[ ]陣列儲存來派對的客人編號,如果不是單身即couple[guest[i]]!=-1,則將isExist[couple[guest[i]]=1,舉例:couple[55555]=66666不等於-1,則isExist[66666]=1,代表的意思是66666的情侶55555來到了派對。這樣最後在遍歷的時候,將isExist[guest[i]]不等於1對應的guest儲存在dog[ ]陣列中,進行排序計數輸出。

2、最後輸出的時候忘記了要先輸出總人數QAQ,所以第一次提交答案全部錯誤。修正後還是有一個測試用例沒有通過,發現最後還是輸出格式問題,客人的編號都是5位數,不夠補零,所以輸出格式應該為%05d。