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("\n"); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)