先解釋題意:給t組資料,每組資料有n個**號碼,要求每個**號碼不能是其他**號碼的字首,若滿足要求輸出yes 否則輸出no
一開始wa,看了下題解 覺得很複雜........且個人認為可以更簡單些。。。。。。。。
於是自己卡了半個小時 ac(這個故事告訴我們 不要總看題解,自己想的也不錯,這也是乙個acmer應有的品質吧)
就兩個判斷就ok了
1.當前串能不能作為其他串的字首
2.其他串能不能作為當前串的字首
弄明白這兩個基本就可以a了
#include#include#includetypedef struct node;
struct node
;struct node *root;
int insert(char *s)
else
if(q->num==1)//判斷之前有沒有某個串是該串的字首
return 1;
i++;
if(i==n) //判斷該串是不是之前某個串的字首
if(q->id==1)
return 1;
q->id=1;
} if(q->num==1)
return 1;
q->id=1;
q->num=1;
return 0;
}void del(node *root)
int main()
} if(mark==0)
printf("yes\n");
else
printf("no\n");
del(root);//釋放記憶體
} return 0;
}
hdu 1671 字典樹《出現mle怎麼解決》
一直覺得 指標版的 字典樹 各種好 直到這題 出現了mle之後 才發現 還是有點煩的 但其實 解決的方法也蠻簡單的 只要寫了個deletetrie函式就好了 1 void deletetrie trie root 211 12delete root 13return 14 這裡 把我折磨了好久 當我...
Tire(字典樹)演算法題目 hdu 1671
題目大意 每組資料給n個號碼,假設某乙個 號碼恰好是另乙個 號碼的字首,那麼這組案例是失敗的,輸出no,因為它不能保證每個 都能撥打出去。題目本質就是尋找乙個字串是否恰好是另一字串的字首,若是,則輸出no 如下 include include include include include incl...
hdu 1250 字典樹 記憶體釋放
第一次做字典樹,找了一道比較簡單的。建樹的時候用到了new動態分配記憶體,剛好學c 的時候老師講到了這一點,動態記憶體有申請就要有釋放。但是在網上看了好多 都沒有清理記憶體。雖然能通過題目測試,但是卻反映了乙個程式設計態度的問題。在此告誡自己,也希望大家都能端正自己的態度,不要為了ac而ac inc...