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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[蓝桥杯][算法提高VIP]项链(dfs)

發布時間:2023/12/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯][算法提高VIP]项链(dfs) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
由 n(1≤n≤100)  個珠子組成的一個項鏈,珠子有紅、藍、白三種顏色,各種顏色的珠子的安排順序由鍵盤輸入的字符串任意給定。藍色用小寫字母b表示,紅色用小寫字母r表示,  白色用小寫字母w表示.

假定從項鏈的某處將其剪斷,把它擺成一條直線。先從左端向右收集同色珠子,遇到第一個異色珠子時停止.  收集過程中, 白色是一種特殊顏色, 既可以看成紅色也可以看成藍色。然后再從剩余珠子的右端向左重復上述過程。

例如:對下圖一所示的項鏈, 如果從圖一中標記的位置0處剪斷,  則按順時針順序得到wbbbwwrrbwbrrwb(如圖二所示)。這時從左端開始收集可以得到wbbbww,   共6個珠子;然后從剩余珠子右端開始收集得到wb,共2個珠子。這種剪法共可收集到6+2=8個珠子。 如果從圖一中標記的位置4處剪斷,  則按順時針順序得到wwrrbwbrrwbwbbb(如圖二所示)。這時從左端收集可以得到wwrr,共4個珠子; 然后從剩余珠子右端收集可以得到wbwbbb,共6個珠子。這種剪法共可收集到4+6=10個珠子。

要求: 在項鏈中選擇合適的剪斷位置, 使得從左右兩端收集到的珠子數目之和最大,輸出收集到的珠子數的最大值M。

輸入
由小寫字母b,r,w組成的字符串。此字符串記錄了一個首尾相接的項鏈從某處斷開后,按順時針順序得到的珠子的直線排列。
輸出
收集到的珠子數的最大值 M
樣例輸入
wbbbwwrrbwbrrwb
樣例輸出
10
思路:我們對于每一個節點,分別向左向右延伸。這個節點所延伸的長度就是這個節點所能擴展的長度。如果這個節點不是‘W’的話,擴展之后就不用再次擴展了。如果是‘W’的話,就需要再次擴展,因為這次擴展有可能比上一次擴展更優。
代碼如下:

#include<bits/stdc++.h> #define LL long long using namespace std;const int maxx=1e2+100; int l[maxx],r[maxx]; string s;inline int dfs(int ll[],int i,int dir,char c,int num) {if(s[i]!=c&&s[i]!='w'&&c!='w') return 0;if(num>s.length()) return s.length();int sum=1;int ti;if(i+dir==s.length()) ti=0;else if(i+dir<0) ti=s.length()-1;else ti=i+dir;if(c=='w'){if(s[ti]=='w') sum+=dfs(ll,ti,dir,c,num+1);else sum+=dfs(ll,ti,dir,s[ti],num+1);}else sum+=dfs(ll,ti,dir,c,num+1);ll[i]=max(min((int)s.length(),sum),ll[i]);return min(sum,(int)s.length()); } int main() {cin>>s;int len=s.length();memset(l,0,sizeof(l));memset(r,0,sizeof(r));for(int i=0;i<s.length();i++){if(l[i]&&s[i]!='w') continue;dfs(l,i,1,s[i],1);}for(int i=s.length()-1;i>=0;i--){if(r[i]&&s[i]!='w') continue;dfs(r,i,-1,s[i],1);}int _max=0;for(int i=0;i<s.length();i++){_max=max(_max,l[i]+r[i-1<0?s.length()-1:i-1]);}cout<<min(_max,(int)(s.length()))<<endl;//和字符串長度取最小值。return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的[蓝桥杯][算法提高VIP]项链(dfs)的全部內容,希望文章能夠幫你解決所遇到的問題。

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