hdu 5055(贪心)
来源:互联网 发布:网络管理从入门到精通 编辑:程序博客网 时间:2024/06/13 11:52
题意:给你N个数,每个数的取值范围为[0,9],求这N个数组成的最大奇数,且该奇数不能有前导零。
解题思路:将偶数和奇数分开,然后分别按从小到大排序,将最小的奇数先拿出来,把剩余的数从大到小排好,最后再将最小的奇数放进去。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn = 105;int n,a,oddNum,evenNum;char odd[maxn],even[maxn],res[maxn];bool cmp(int a,int b){return a > b;}int main(){while(scanf("%d",&n)!=EOF){evenNum = oddNum = 0;for(int i = 1; i <= n; i++){scanf("%d",&a);if(a % 2 == 0)even[evenNum++] = '0' + a;else odd[oddNum++] = '0' + a;}if(oddNum == 0){printf("-1\n");continue;}sort(odd,odd+oddNum,cmp);sort(even,even+evenNum,cmp);int l = 0, r = 0, cnt = 0;while(l < oddNum - 1 && r < evenNum){if(odd[l] > even[r]){res[cnt++] = odd[l];l++;}else{res[cnt++] = even[r];r++;}}while(r < evenNum){res[cnt++] = even[r];r++;}while(l < oddNum){res[cnt++] = odd[l];l++;}res[cnt] = '\0';if(res[0] == '0') printf("-1\n");else printf("%s\n",res);}return 0;}
0 0
- hdu 5055(贪心)
- HDU 贪心
- 【贪心】hdu
- HDU 2111 Saving HDU(贪心)
- HDU 2111贪心--【Saving HDU】
- HDU 2111 Saving HDU (贪心)
- HDU Saving HDU (贪心)
- HDU 2111 Saving HDU【贪心】
- 【HDU 2111】Saving HDU(贪心)
- HDU.2111 Saving HDU(贪心)
- hdu 1257 dp+贪心
- HDU 1257 DP + 贪心
- hdu pie(二分+贪心)
- hdu 2037 贪心
- 【贪心】hdu 2863
- HDU 4023 贪心+博弈
- 【贪心】HDU 4137
- HDU-1009 贪心
- h5学习笔记: ul和li组合
- JavaScript(二)
- 各大公司广泛使用的在线学习算法FTRL详解
- Activity中windowSoftInputMode属性
- Android ProgressBar详解以及自定义
- hdu 5055(贪心)
- 1.2、开发工具——sublime篇
- JS小技巧:判断数据类型的一种方法
- JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
- Leetcode 202. Happy Number
- Linux学习之帮助命令
- 怎么样在input标签选择是直接显示本地图片
- 虚析构函数(√)、纯虚析构函数(√)、虚构造函数(X)
- C语言基础 检查自己的编译器是否支持根据输入来确定数组的大小