FZU Problem 2111 Min Number
来源:互联网 发布:1010软件怎么用 编辑:程序博客网 时间:2024/05/17 01:33
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ //freopen("in.txt","r",stdin); int cas,time,num; char str[1100],ss[1100]; scanf("%d",&cas); while(cas--) { scanf("%s %d",str,&time); if(time==0) { printf("%s\n",str); continue; } strcpy(ss,str); sort(ss,ss+strlen(ss)); int i; for(i=0; ss[i]!='\0'&&ss[i]=='0'; i++); ss[0]=ss[i]; ss[i]='0'; char min='9'; int index=0; for( i=0; str[i]!='\0'; i++) { if(str[i]=='0') continue; if(str[i]<min) { min=str[i]; index=i; } } char temp; if(str[index]!=str[0]) { time--; temp=str[0]; str[0]=str[index]; str[index]=temp; } if(strcmp(str,ss)==0) { printf("%s\n",ss); continue; } int flag=0; num=1; while(time--) { min='9'; index=num; for(int j=num; str[j]!='\0'; j++) { if(str[j]<min) { min=str[j]; index=j; } } if(index==num) { time++; num++; continue; } temp=str[num]; str[num]=min; str[index]=temp; if(strcmp(str,ss)==0) { printf("%s\n",ss); flag=1; break; } } if(flag==0) printf("%s\n",str); } return 0;}
用两个数组存输入的一串数字,给ss排序,为避免ss[0]出现0,判断一下,如果是0就让它和第一个不是0的数位交换。然后一次次交换,有点类似于冒泡排序的慢动作,把最小的往前挪,每交换一次之后,检查是否已经是最小的了,如果是直接输出就可以了。注意第一次交换时还是不可以把0放到str[0]。另外只有真正有交换动作时time才会减1。
“高教社杯”第三届福建省大学生程序设计竞赛
- FZU Problem 2111 Min Number
- FZU 2111 Min Number
- FZU 2111Min Number
- FZU 2111 Min Number
- FZU - 2111 Min Number
- FZU 2111【 Min Number】
- FZU 2111 Min Number
- FZU-2111-Min Number
- FZU Problem 2111 Min Number (数学啊 )
- fzu 2111 Min Number 贪心
- fzu 2111 Min Number(贪心)
- fzu 2111 Min Number 搜索
- FZU 2111J - Min Number
- Problem 2111 Min Number
- FZU 2111 Min Number (想法题)
- FZU - 2111 Min Number(贪心)
- FZU OJ 2111 Min Number (贪心)
- ACM--贪心--FZU--2111--Min Number
- ArcGlobe与ArcScene功能比较与简单说明
- iOS开发27:打包应用程序
- 新浪微博iOS版SDK“宝玉XP”框架学习笔记
- HTML 5 Canvas
- 使用svn命令行递归的添加文件
- FZU Problem 2111 Min Number
- 这都是些啥??asp.net!你搞懂了没!
- 黑马程序员_常见的几个运行时异常
- SpringMvc配置使用jackson
- 2.6.14移植
- 基于充放电原理的电容式触摸按键设计
- java中获得当前日期的上个月1号的日期
- virtualbox下的Ubuntu 1366x768全屏显示
- 隐藏控制台窗口