C++ 單詞接龍

來源:互聯網
上載者:User

標籤:size   std   one   長度   排序   變數   tco   pad   相同   

問題描述:

  1. 拉姆剛剛開始學習英文字母,對單詞排序高度興趣,他能夠迅速確定是否可以將這些單詞排列在一個列表中,使得該列表中任何單詞的首字母與前一個單詞的尾字母相同,力能編寫一個電腦程式協助拉姆進行判斷嗎?  
  2.   
  3. 函數canArrangeWords的輸入包含一個整數num和一個單詞arr。num表示列表中單詞的數目(1<=num<=100),而arr應包含只由’a’-‘z’組成的單詞(2<=arr中單詞長度<=100)  
  4.   
  5. 如果列表中的單詞可按照要求的方式排列,返回1;否則返回-1。在這種排列中,列表中的第一個單詞可以任意字母開頭,不需要滿足約束條件。  
  6.   
  7. 測試案例:   
  8. TestCase 1:Input:4, [abcd,defg,ghij,jkl] Expected Return Value:1   
  9. TestCase 2: Input: 4,[ghij,defg,jkl,abcd] Expected Return Value:-1 

問題分析:

  1. 1.定義兩個變數,代表當前匹配通過的start和end   
  2. 2.對於下一個word來說,有可能是首尾匹配,也有可能是尾首匹配,分別更新start和end即可。   
  3. 3.如果下一個word跟當前不匹配,我們把當且word放入容器的尾部(因為可能會在後面完成匹配)   
  4. 4.如此迴圈,所有都匹配成功,或者匹配和不匹配的單詞總數超過單詞總數   
  5. 5.根據上述1-4步驟,很容易聯想到用隊列作為資料結構。
     1 using namespace std; 2 int canArrangeWords(int num,char** arr){ 3 if(num<1||num>100) 4 return -1; 5 queue<string> qs; 6 for(int i=0;i<num;i++) 7 { 8 qs.push(arr[i]); 9 int len=strlen(arr[i]);10 if(len<2||len>100)11 return -1;12 }13 int count=1;14 int countr=0;15 char head=qs.front().at(0);16 char end=qs.front().at(strlen(arr[0]-1);17 qs.pop();18 while(!qs.empty()&&(count+countr<=num))19 {20 int len=strlen(qs.front().c_str());21 if(qs.front().at(0)==end)22 {23 end=qs.front().at(len-1);24 qs.pop();25 count++;26 }27 else if(qs.front().at(len-1)==head)28 {29 head=qs.front().at(0);30 qs.pop();31 count++;32 }33 else34 {35 qs.push(qs.front());36 qs.pop();37 countr++;38 }39 }40 if(count==num)41 return 1;42 return -1;43 }

     

 

C++ 單詞接龍

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.