HDU-5455 Fang Fang (思維)
阿新 • • 發佈:2018-11-01
題目:輸入一個字串,問最少能由幾個Fi組成,若不能恰好由Fi組成,輸出-1;
這題有一個坑點就是如果輸入的字串中有除c和f以外的其他字元時直接輸出-1(剛開始做的時候沒有想到這一點,被坑的好慘= =);如果字串全部由f組成,則輸出(len+1)/2;否則就要看字串中c的個數,若相鄰兩個c之間的f少於2個輸出-1,否則c的個數就是Fi的最少數目。還有一點要注意的就是這個字串是環狀的。
AC程式碼:
#include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <cmath> #include <queue> #include <stack> #include <vector> #include <map> #include <set> using namespace std; const int MAX=1e6+7; int t; string s; int main() { scanf("%d",&t); for(int o=1;o<=t;o++) { int ok=1; int flag=0; int cf=0; int ans=0; cin>>s; int len=s.size(); for(int i=0; i<len; i++) { if(s[i]=='c') { if(s[(i+1)%len]=='c'||s[(i+2)%len]=='c') { ok=0; break; } ans++; flag=1; cf=0; } if(s[i]!='c'&&s[i]!='f') { ok=0; break; } } if(ok==0) printf("Case #%d: -1\n",o); else { if(ans==0) ans=(len+1)/2; printf("Case #%d: %d\n",o,ans); } } return 0; }