d518.
文字抄寫 II
| From: [163.24.253.86] |
發表日期
:
2010-11-21 21:49
您的程式未完成所有的輸出!!(line:524)
您只輸出了 523 行!
可能的原因為
* 未用 while 迴圈讀取全部的測試資料,以致輸出短少,請參考 a001 範例程式。
* 程式未充分考慮所有邊界值而導致程式提前中止
我的方法是實作26元樹出來,程式碼也沒有什麼邊界的問題,但...就是停了。
#include <iostream>
using namespace std;
struct tree {
int num, round;
struct tree *next[26];
};
typedef struct tree t;
int main()
{
int n, i, j, k, x, num, round = 0;
char ch[21];
t node, *p;
for(i=0; i<26; i++) node.next[i] = NULL;
while(cin>>n) {
round++;
num = 1;
for(i=0; i<n; i++) {
cin>>ch;
p = &node;
for(j=0; ch[j]; j++) {
x = ch[j]-'a';
if(p->next[x] == NULL) {
p->next[x] = new t;
p = p->next[x];
p->num = p->round = 0;
for(k=0; k<26; k++) p->next[k] = NULL;
}
else p = p->next[x];
}
if(p->num == 0 || p->round != round) {
p->num = num;
p->round = round;
cout<<"New! "<<num++<<endl;
}
else cout<<"Old! "<<p->num<<endl;
}
}
return 0;
}