hdu--5055 Bob and math problem
2014-12-09 21:58
363 查看
题目大意:
给你N位数,每位数是0~9之间。你把这N位数构成一个整数。
要求:
1、必须是奇数
2、整数的前面没有0
3、找到一个最大的整数
如果满足1、2、3条件,就输出这个数,不满足就输出-1.
整体思路:对给的序列进行从大到小排序,再从右边第一个数开始找奇数,也就是相当于找最小的奇数,如果找到这个奇数,把这个奇数之后的数字依次向左移一位,再把奇数放在最后一位。同时如果这个序列第一个数字不为0,就可以输出这个序列,否则就输出-1;
代码实现如下:
给你N位数,每位数是0~9之间。你把这N位数构成一个整数。
要求:
1、必须是奇数
2、整数的前面没有0
3、找到一个最大的整数
如果满足1、2、3条件,就输出这个数,不满足就输出-1.
整体思路:对给的序列进行从大到小排序,再从右边第一个数开始找奇数,也就是相当于找最小的奇数,如果找到这个奇数,把这个奇数之后的数字依次向左移一位,再把奇数放在最后一位。同时如果这个序列第一个数字不为0,就可以输出这个序列,否则就输出-1;
代码实现如下:
#include<cstdio> #include<algorithm> using namespace std; int a[110]; int cmp(int a,int b){ return a>b; } int main(){ int n; while(scanf("%d",&n)!=EOF){ int pos=-1; int t; for(int i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n,cmp); for(int i=n-1;i>=0;i--){ if(a[i]%2==1){ pos=i; t=a[i]; break; } } if(pos>=0){ for(int i=pos;i<n;i++) a[i]=a[i+1]; a[n-1]=t; if(a[0]==0) printf("-1\n"); else{ for(int i=0;i<n;i++) printf("%d",a[i]); printf("\n"); } } else printf("-1\n"); } return 0; }
相关文章推荐
- hdu 5055 Bob and math problem
- hdu5055——Bob and math problem
- HDU 5055 Bob and math problem(贪心)——BestCoder Round #11(div.2)
- HDU 5055 Bob and math problem
- hdu----(5055)Bob and math problem(贪心)
- HDU 5055 Bob and math problem(结构体)
- hdu 5055 Bob and math problem
- HDU 5055 Bob and math problem
- [5055]Bob and math problem(hdu)
- HDU 5055 Bob and math problem(构造)
- HDU 5055 Bob and math problem
- hdu 5055 Bob and math problem
- HDU-#5055 Bob and math problem(模拟)
- HDU 5055 Bob and math problem
- HDU 5055 Bob and math problem(构造)
- 【CUGBACM15级BC第11场 B】hdu 5055 Bob and math problem
- hdu 5055 Bob and math problem
- HDU 5055 Bob and math problem
- HDU 5055 Bob and math problem
- HDU 5055 - Bob and math problem(贪心)