小b重排字符串
阿新 • • 發佈:2019-04-18
col content 51nod text urn 字符 puts out html
2485 小b重排字符串
小b有一個字符串S,現在她希望重排列S,使得S中相鄰字符不同。
請你判斷小b是否可能成功。
樣例解釋:將"aab"重排為"aba"即可。
輸入
Ã輸入一個只包含小寫字母的字符串S,其長度n滿足1≤n≤500
輸出
如果可能,輸出"Possible"; 否則,輸出"Impossible"。
輸入樣例
aab
輸出樣例
Possible
思路:統計每一個字母出現的次數,如果la%2==0,出現最多次數必須《=la/2;如果la%2==1,必須《=la/2+1;
#include<iostream> using namespace std; int x[129]; int main(){ string a; cin>>a; int la=a.size(); for(int i=0;i<la;i++) x[a[i]]++; int maxx=0; for(int i=1;i<=128;i++) if(maxx<x[i]) maxx=x[i]; //cout<<maxx<<endl;if(la%2==0&&maxx>la/2){ cout<<"Impossible"<<endl; return 0; } if(la%2==1&&maxx>la/2+1){ cout<<"Impossible"<<endl; return 0; } cout<<"Possible"<<endl; return 0; }
小b重排字符串