Coderforces 508B 简单贪心

背景: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;
} 


你可能感兴趣的:(C++,ACM)