hdu 1251 (辞書ツリー) 統計問題 http://acm.hdu.edu.cn/showproblem.php?pid=1251
問題解決のアイデア: 辞書ツリーのテンプレートを直接適用します。空白行で終わる判定は であることに注意してください。
strcmp(str,"")==0
コード:
#include
#include
#include
名前空間 std を使用します;
//辞書ツリー構造を作成します
構造体ノード{
int num;
構造体ノード *br[26];
};
ノード *ルート;
//文字を挿入してツリーを作成します
void Tree_Insert(char str[]){
ノード *t 、 *s = ルート;
int i , j;
int len = strlen(str) - 1;
for(i = 0;i
int id = str[i] - 'a';
If(s -> br[id] == NULL){
t = 新しいノード;
for(j = 0; j
t -> br[j] = NULL;
}
t -> = 0;
s -> br[id] = t;
}
s = s -> br[id];
s ->num++;
}
}
//検索
int Tree_search(char str[]){
ノード *s = ルート;
int カウント;
int len = strlen(str) - 1;
for(int i = 0; i
int id = str[i] - 'a';
If(s -> br[id] == NULL){
カウント = 0;
戻り数;
}
else{
s = s -> br[id];
カウント = s -> num;
}
}
戻り値;
}
int main(){
int i , j;
ルート = 新しいノード;
for(i = 0; i
ルート -> br[i] = NULL;
ルート -> 数値 = 0;
}
char str[15];
while(gets(str),strcmp(str,"")){ //ここでの判定条件に注意、カンマ式
Tree_Insert(str);
}
While(gets(str)){
cout<
0 を返します
}