码迷,mamicode.com
首页 > 其他好文 > 详细

Coderforces 508B 简单贪心

时间:2015-01-28 16:04:07      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:acm   c++   

背景:1——WA:有一出少了break,还是惧怕时间没有自己出数据看看的错!

思路:fi全是奇数,输出-1,else if 全部偶数都大于最后一位数,让最右边的偶数和最后一位数交换;else 让最左边的比最后一位数打的偶数与最后一位数交换!

#include<stdio.h>
#include<string.h>
char str[100009];

int main(void){
		while(~scanf("%s",str)){
			int n=strlen(str);
			bool ok=false;
			for(int i=0;i < n-1;i++){if((str[i]-'0')%2 == 0) ok=true;}
			if(!ok) printf("-1\n");
			else{
				for(int i=0;i < n-1;i++){
					if((str[i]-'0')%2 == 0 && str[i] < str[n-1]){
						char key=str[i];
						str[i]=str[n-1];
						str[n-1]=key;
						ok=false;
						break;
					}
				}
				if(!ok) printf("%s\n",str);
				else{
					for(int i=n-2;i >= 0;i--){
						if((str[i]-'0')%2 == 0){
							char key=str[i];
						  str[i]=str[n-1];
						  str[n-1]=key;
						  printf("%s\n",str);
						  break;
						}
					}
				}
			}
		}
		return 0;
} 


Coderforces 508B 简单贪心

标签:acm   c++   

原文地址:http://blog.csdn.net/jibancanyang/article/details/43230303

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!