设为首页 加入收藏

TOP

hdu----(5055)Bob and math problem(贪心)
2015-07-20 17:35:56 来源: 作者: 【 】 浏览:1
Tags:hdu---- 5055 Bob and math problem 贪心
ime Limit: 2000/1000 MS ( Java/Others) ? ?Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 401 ? ?Accepted Submission(s): 149
?
?
?
Problem Description
Recently, Bob has been thinking about a math problem.
There are N Digits, each digit is between 0 and 9. You need to use this N Digits to constitute an Integer.
This Integer needs to satisfy the following conditions:
1. must be an odd Integer.
?
2. there is no leading zero.
?
3. find the biggest one which is satisfied 1, 2.
?
Example:?
There are three Digits: 0, 1, 3. It can constitute six number of Integers. Only "301", "103" is legal, while "130", "310", "013", "031" is illegal. The biggest one of odd Integer is "301".
?
?
?
Input
There are multiple test cases. Please process till EOF.
Each case starts with a line containing an integer N ( 1 <= N <= 100 ).
The second line contains N Digits which indicate the digit a1,a2,a3,…,an.(0≤ai≤9).
?
?
?
Output
The output of each test case of a line. If you can constitute an Integer which is satisfied above conditions, please output the biggest one. Otherwise, output "-1" instead.
?
?
?
Sample Input
3 0 1 3 3 5 4 2 3 2 4 6
?
?
?
Sample Output
301 425 -1
?
?
?
Source
BestCoder Round #11 (Div. 2)
?
贪心
代码:
?1 #include
?2 #include
?3 #include
?4 #include
?5 #include
?6 using namespace std;
?7 int str[120];
?8 int main()
?9 {
10 ? int n,i,res;
11 ? while(scanf("%d",&n)!=EOF)
12 ? {
13 ? ? ? res=10;
14 ? ? ? for(i=0;i
15 ? ? {
16 ? ? ? ?scanf("%d",&str[i]);
17 ? ? ? if(str[i]&1==1&&res>str[i])
18 ? ? ? ? ? res=str[i];
19 ? ? }
20 ? ? if(res==10){
21 ? ? ? ? printf("-1\n");
22 ? ? ? ? continue;
23 ? ? }
24 ? ? sort(str,str+n,greater());
25 ? ? ?int fir=-1,st=res;
26 ? ? for(i=0;i
27 ? ? {
28 ? ? ? ? if(res==str[i]) res=-1;
29 ? ? ? ? else
30 ? ? ? ? {
31 ? ? ? ? ? ? fir=str[i];
32 ? ? ? ? ? ? break;
33 ? ? ? ? }
34 ? ? }
35 ? ? if(fir==0) printf("-1\n");
36 ? ? else
37 ? ? {
38 ? ? ? ? if(fir!=-1)
39 ? ? ? ? ? printf("%d",fir);
40 ? ? ? ? for( i++; i
41 ? ? ? ? if(res==str[i])res=-1;
42 ? ? ? ? else
43 ? ? ? ? ?printf("%d",str[i]);
44 ? ? ? ? printf("%d\n",st);
45 ? ? }
46 ? }
47 ? return 0;
48 }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 5047 Sawtooth 组合数学 高精.. 下一篇NYOJ 1085 数单词 (AC自动机模板..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)