EOJ Monthly 2017.12 이 위 구조 (욕심 + STL 특성 용기 + 헤더 파일) 미 해결
Input
한 줄 한 단어 s (1≤|s|≤105)。단어 26 소문 자 알파벳 구성
Output
단 어 를 출력 합 니 다.다 분해 가 있 으 면 출력 을 임의로 풀 어 줍 니 다.존재 하지 않 으 면 출력 impossible。
Examples input
unce output
ecnu input
aaaaaa output
impossible
사고방식: 욕심 이 많 고 횟수 가 가장 많은 문자열 이 가장 처리 하기 어렵다. 경기 에서 이 처리 가 부적 절하 기 때문에 다른 사람의 블 로 그 를 본 후에 횟수 가 가장 많은 알파벳 을 횟수 가 가장 적은 알파벳 에 놓 고 횟수 가 많은 것 과 횟수 가 많은 것 을 가장 많은 위치 에 기입 하도록 한다.
예:
5 4 3 2 1
4 3 2 1 5 (숫자 는 알파벳 자 체 를 대표 하 는 것 이지 횟수 가 아니다)
#include //
using namespace std;
string s;
int main(){
while(cin >> s){
int cnt[26],flag=0;
memset(cnt, 0, sizeof(cnt));
for(int i = 0; i < s.size(); ++i){ //
cnt[s[i] - 'a']++;
}
vector > g; // pair
for(int i = 0; i < 26; ++i){
if(cnt[i] > 0){
g.push_back(make_pair(cnt[i], i)); //
}
}
sort(g.begin(), g.end()); // sort
reverse(g.begin(), g.end()); // ,
string cur = ""; //
for(int i = 0; i < g.size(); ++i){
for(int j = 1; j <= g[i].first; ++j){
cur += 'a' + g[i].second; //
}
}
string ans = ""; //
int pos = g[0].first;
int i = pos; //
while(i < cur.size()){ // cur ans
ans =ans+ cur[i++];
}
i = 0;
while(i < pos){
ans += cur[i++]; // ans
}
vectorx[26]; // x[26][]
for(int i = 0; i < ans.size(); ++i){
x[cur[i] - 'a'].push_back(ans[i] - 'a');//x[cur ][]=ans cur ans
}
int poss[26];
memset(poss, 0, sizeof(poss));
string res = ""; //
for(int i = 0; i < s.size(); ++i){
res+='a' + x[s[i] - 'a'][poss[s[i] - 'a']++];//poss 0
} // res+= res=res+
for(int i = 0; i < s.size(); ++i){
if(s[i] == res[i]){
cout<
\ # include 이 헤더 파일 은 다음 과 같은 C + + 에 포 함 된 모든 헤더 파일 을 포함 합 니 다. #include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
EOJ Monthly 2017.12 이 위 구조 (욕심 + STL 특성 용기 + 헤더 파일) 미 해결이 위 구사 (anagram) 한 단어 에 있 는 자 모 를 다시 배열 하 는 것 을 말한다. 원래 단어 에 있 는 모든 자모 가 나타 나 고 한 번 밖 에 없다.예컨대 "unce" 이 위 "ecnu"。어떤 상황 에...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.