zoukankan      html  css  js  c++  java
  • HDU4550+贪心

    /*
    贪心
    先挑出最小的Mm,然后在Mm左侧的按情况考虑,右侧的按顺序排列。
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<map>
    #include<math.h>
    using namespace std;
    typedef long long ll;
    //typedef __int64 int64;
    const int maxn = 105;
    const int inf = 0x7fffffff;
    const double pi=acos(-1.0);
    const double eps = 1e-8;
    char s[ maxn ];
    char Min[ 3*maxn ];
    int main(){
    	int T;
    	scanf("%d",&T);
    	while( T-- ){
    		scanf("%s",s);
    		int len = strlen( s );
    		for( int i=0;i<3*maxn;i++ ){
    			Min[ i ] = '@';
    		}//init
    		int lpos,rpos,mid;
    		mid = 100;
    		lpos = 100;
    		rpos = 100;
    		char Mm = '9';
    		int Mmpos;
    		for( int i=0;i<len;i++ ){
    			if( s[i]!='0'&&Mm>=s[i] ){
    				Mm = s[i];
    				Mmpos = i;
    			}
    		}
    		Min[ mid ] = s[0];
    		for( int i=1;i<len;i++ ){
    			if( i<Mmpos ){//大的在right
    				if( s[i]>Min[lpos] ){
    					Min[ ++rpos ] = s[i];
    				}
    				else if( s[i]<=Min[lpos] ){
    					Min[ --lpos ] = s[i];
    				}//注意这里的“=”,因为Min[lpos]后面的都比s[i]大
    			}
    			else if( i==Mmpos ){
    				Min[ --lpos ] = s[i];
    			}
    			else {//全部放在后面
    				Min[ ++rpos ] = s[i];
    			}
    		}
    		for( int i=lpos;Min[i]!='@';i++ )
    			printf("%c",Min[i]);
    		printf("
    ");
    	}
    	return 0;
    }



  • 相关阅读:
    第一次练习总结
    第一次上机总结
    写在程序组干活之前
    虚拟机Centos7安装Mysql
    第一章 开发体验
    如何优雅的移植JavaScript组件到Blazor
    Asp.net core中RedisMQ的简单应用
    docker容器安装mysql
    Centos 8安装Docker
    c# 定时启动一个操作、任务(版本2)
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3249272.html
Copyright © 2011-2022 走看看