首页 > 其他 > 详细

3.19 每日一题题解

时间:2020-03-19 15:27:56      阅读:36      评论:0      收藏:0      [点我收藏+]

Minimize The Integer

题目链接:https://codeforces.com/problemset/problem/1251/C

涉及知识点:

  • 思维/模拟

solution:

  • 奇数可以和相邻的偶数换位置,偶数可以和相邻的奇数换位置
  • 这就保证了所有的奇数的相对位置不会改变,偶数也一样,你可以理解成135这个字符串任意相邻位置都无法交换,只能保持135的顺序
  • 我们可以用两个vector数组,一个存奇数,一个存偶数,队首元素谁小先输出谁,这样能保证最后的字符串是字典序最小
  • 样例3,输入234642,对应的两个数组 :v1[] = { 2 , 4 , 6 , 4 , 2} , v2[] = { 3 }

std:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        vector<int> v1,v2;
        string s;
        cin>>s;
        int len = s.length();
        for(int i=0;i<len;i++){
            int x = s[i] - '0';
            if(x%2)
                v1.push_back(x);
            else
                v2.push_back(x);
        }
        int i , j;
        for(i=0,j=0;i<v1.size()&&j<v2.size();){
            if(v1[i] < v2[j])
                cout<<v1[i++];
            else
                cout<<v2[j++];
        }
        if(i < v1.size()){
            for( ; i < v1.size() ; i++)
                cout<<v1[i];
        }
        if(j < v2.size()){
            for( ; j < v2.size() ; j++)
                cout<<v2[j];
        }
        cout<<endl;
    }
    return 0;
}

3.19 每日一题题解

原文:https://www.cnblogs.com/QFNU-ACM/p/12524112.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!