日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UVA455 - Periodic Strings

發布時間:2023/12/10 编程问答 102 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVA455 - Periodic Strings 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原題鏈接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=830&page=show_problem&problem=396

題意:? 如果一個字符串可以由某個長度為k的字符串重復多次得到,則稱該串以k為周期。例
?????????? 如,abcabcabcabc以3為周期(注意,它也以6和12為周期)。
??????????? 輸入一個長度不超過80的字符串,輸出其最小周期

解題思路過程:

??????????? 首先,我想到的是用隊列

?????????????? 把待測串s[]的首字符s[0]入隊,從第二個字符s[1]開始和隊首元素對比,

????????????????????? if(s[i]==c.pop())(c為隊列)隊首出隊;sum++;

????????????????????? else c.push(s[i])

????????????? 一直到隊列為空or所有元素都遍歷過一遍為止。

????????????? 最后如果sum==0 || 串的長度與sum取模!=0 就說明它的最短周期是它本身

?

1 #include <iostream> 2 #include<string> 3 #include<queue> 4 using namespace std; 5 int main(){ 6 int T; 7 cin>>T; 8 while(T){ 9 string a; 10 cin>>a; 11 int len=a.length(); 12 int lena=len; 13 len--; 14 queue<char>c; 15 c.push(a[0]); 16 int i=1,sum=0; 17 while(!c.empty()&&len){ 18 char temp=c.front(); 19 if(temp==a[i]){ 20 c.pop();sum++; 21 } 22 else c.push(a[i]); 23 i++;len--; 24 } 25 // if(sum==1)sum=lena; 26 if(sum==0)sum=lena; 27 else if((lena%sum)!=0)sum=lena; 28 cout<<sum<<endl; 29 T--; 30 } 31 return 0; 32 }

后來測試才發現,這算法有個致命的bug!!!

“算法盲點”:amanamanamanaman
按此串所模式,最小周期應該是4,但因為使用隊列的緣故,無法實現出現隊列為空的情況顧,此路不通。。。

?


經過重新觀察數據規模,發現和題意,發現通過枚舉完成此題。

1 #include <iostream> 2 #include<string> 3 #include<queue> 4 using namespace std; 5 int main(){ 6 int T; 7 cin>>T; 8 while(T){ 9 string a; 10 cin>>a; 11 int ok=1; 12 int len=a.length(); 13 for(int i=1;i<=len;i++){ 14 if(len%i==0){ 15 ok=1; 16 for(int j=i;j<len;j++){ 17 if(a[j]!=a[j%i]){ 18 ok=0; 19 break; 20 } 21 } 22 } 23 if(ok){cout<<i<<endl;break;} 24 } 25 T--; 26 } 27 return 0; 28 }

首先從1開始枚舉子串長度,如果待測串%子串長度==0就可以接著去對照待測串中的元素最終找出待測串的最小周期

轉載于:https://www.cnblogs.com/yifeianyi/p/6900118.html

總結

以上是生活随笔為你收集整理的UVA455 - Periodic Strings的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。