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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法竞赛入门经典(第二版) | 程序3-10 生成元 (UVa1584,Circular Sequence)

發布時間:2024/2/28 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法竞赛入门经典(第二版) | 程序3-10 生成元 (UVa1584,Circular Sequence) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目概述:

長度為n的環狀串有n種表示法, 字典序最小的稱為最小表示。輸入一個長度為n(n<100)的環狀字符串的一種表示方法,輸出最小表示 。
如:CTCC 為環狀字符串的一種表示方法,它的所有表示方法分別為:CTCC、TCCC、CCCT、CCTC。其中最小表示為CCCT。

儲備知識:
字典序:

字典序:按字典順序從兩個字符串的第一位開始比較,字典順序靠前的串較小。若兩串前n個字母都相同,但串A長于串B,則串B小。
如:ABCD小于BCDA

思路:

將序列放入無頭指針循環鏈表(一定是無頭指針的鏈表,否則判每次遍歷都需跳過頭指針,非常麻煩)。
利用循環鏈表的循環特性求出每種情況, 分別比較。 代碼其實并不長,只是寫鏈表占了很多行。

收獲:

掌握了無頭指針循環鏈表的定義方法,學到了字典序的概念。

代碼:
#include <iostream> #include <cstdio> #include <list> #include <cstdlib> #include <cstring>using namespace std ;typedef struct LNode *lbook ; struct LNode{char x ;struct LNode *list ; }; //創建 lbook Creat(char a[] , int len1) {lbook P , P1 , P2 ;P = (lbook)malloc(sizeof(LNode)) ; //無頭指針 P->x = a[0] ; //無頭指針的鏈表定義方式 P1 = P;int j = 1 ;while(j != len1) {char s = a[j++] ;lbook P3 ;P3 = (lbook)malloc(sizeof(LNode)) ;P3->x = s ;P3->list = P1->list ;P1->list = P3 ;P1 = P3 ;}P1->list = P ; //循環鏈表 return P ; }//查找 lbook Find(lbook P , int len , int i) { int k = 0 ; while(k++ != len) {if(k == i) return P ;P = P->list ;} } int main() {//悔棋很麻煩。 lbook L ;char a[105] ;cin >> a ; //輸入 int len = strlen(a) ; //輸入字符串a的長度L = Creat(a , len) ; if(len == 1) { //特殊情況:長度為1則直接輸出。 Show(L,len) ;return 0 ;}//每條鏈比較字典序,n條鏈需比較n-1次。int k = 0 ; int s = 2 ;char c[105] ; //存放結果strcpy(c,a) ; //c先行存放a數組的值。 while(k++ != (len-1)) {lbook LL = Find(L, len, s) ;s++ ;//定義d數組,分別存放環狀序列所有結果 char d[105] ; int r = 0 ;while(r != len) {d[r] = LL->x ;r++ ;LL = LL->list ;}//若c>d,則將d賦給c,重復操作。 if((strcmp(c,d)) == 1) strcpy(c,d) ;} cout << c ; return 0 ;} 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的算法竞赛入门经典(第二版) | 程序3-10 生成元 (UVa1584,Circular Sequence)的全部內容,希望文章能夠幫你解決所遇到的問題。

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