讨论区多次提到过在某种情况下要以第一次出现的字母作为起点。这在测试点 2 表现在:
3 w w w
答案应该是 w.w.w,我 91pts 的代码输出了 ***
w.w.w
***
原因在于,根据欧拉回路的判定,在以上数据下,起点和终点都为 0,此时应该像上文一样找到正确的起点,例如:
if(Es==0) for(int i=0;i<26;i++) if(out[i]) { Es=i; break; }
并且其实本题 50 行左右就可以写完了额……