1. 程式人生 > >小b重排字符串

小b重排字符串

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重排字符串