Fzu 2135 数字游戏【贪心】
来源:互联网 发布:网络词凉凉是什么意思 编辑:程序博客网 时间:2024/05/16 19:48
Problem 2135 数字游戏
Accept: 345 Submit: 548
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
给一个N位的正整数,该数不包含前导0,先让你调整其中每个数字的位置,得到另一个n位的数,并且使得这个数越小越好,而且这个数不能包含前导0。比如543210可以变成102345,而12345保持不变才是最优结果。
Input
第一行一个整数T(T<=100),表示有T组数据。
每组数据先输入一行一个整数N(1<=N<=100),表示位数,接下来一行输入一个N位的不包含前导0的正整数。
Output
每组数据对应一行输出,即调整数字位置后能得到的最小的不包含前导0的数。
Sample Input
3
6
543210
3
123
3
231
Sample Output
102345
123
123
思路:
首先我们将原串中出现过的每个数字的次数统计出来。
然后贪心去想:肯定我们是将数小的放在首位。
接着处理最特殊的数字:0
我们只需要确定首位是什么数字之后,我们紧接着将所有的0输出,然后再接着输出从小到大的数字即可。
Ac代码:
#include<stdio.h>#include<string.h>using namespace std;char a[151515];int vis[10];int main(){ int t; scanf("%d",&t); while(t--) { memset(vis,0,sizeof(vis)); int n; scanf("%d",&n); scanf("%s",a); for(int i=0;i<n;i++) { vis[a[i]-'0']++; } int f=0; for(int i=1;i<=9;i++) { if(vis[i]>0) { if(f==0) { printf("%d",i); for(int j=0;j<vis[0];j++) { printf("0"); } for(int j=1;j<vis[i];j++) { printf("%d",i); } } else { for(int j=0;j<vis[i];j++) { printf("%d",i); } } f++; } } if(f==0) { for(int j=0;j<vis[0];j++) { printf("0"); } } printf("\n"); }}
0 0
- Fzu 2135 数字游戏【贪心】
- FZU 2135 数字游戏
- FZU 2135 数字游戏
- FZU 2135---数字游戏
- FZU 2135 数字游戏(思维题)
- FZU 2089 数字游戏
- FZU 2089 数字游戏
- FZU 2089 数字游戏
- FZU——数字游戏
- fzu——Problem 2089 数字游戏
- fzu 2089 数字游戏(水题,模拟)
- fzu 2051 Monster (贪心)
- FZU 2144 几何+贪心
- fzu 2120 数字排列
- FZUOJ 2135 数字游戏
- FZU 1056 扫雷游戏
- FZU-竞技游戏
- FZU 1056 扫雷游戏
- <c:forEach>标签
- Spring框架_事物管理器的配置
- 常用的五大bug管理工具的优缺点
- snprintf使用注意点
- 《图说VR入门》——DK2入门及其资源汇总
- Fzu 2135 数字游戏【贪心】
- 重新梳理一下C语言基本数据类型
- Eclipse+TestNG+ant+selenium++jenkins+svn自动化测试框架搭建
- 给action增加参数需要设置method为post
- 旋转的方块
- 前端为什么要做组件化
- Code signing is required for product type 'Application' in SDK 'iOS 10.0'
- 如何安全退出已调用多个 Activity 的 Application?
- 上传github项目