题目传送门

题号 A B C D E F G H I J K L
状态 Ο . . Ο . . Ø Ø Ο Ο . Ο

 

 

Ο:当场

Ø:已补

.  :  待补

A. Edit Distance

Thinking:kk pai爷

Code:kk

  不能直接反转,比如"010101",直接反转后就变成"101010",右移一位,然后加个0就可以了。

  所以要先统计01的数量,如果0大于1,就全变成1,1大于0,就全变成0(从数量上的改变就大于s/2了),相等的话,就看首位是0还是1,取相反,后面和首位不一样就行(位置)。

#include<bits/stdc++.h>
#include<tr1/unordered_map>
#include<bits/stdc++.h>
#define clr(a,b) memset(a,b,sizeof(a))
#define fpn() freopen("simple.in","r",stdin)
#define rd read()
using namespace std;
const int maxn=2010;
typedef long long ll;
int a,b;
char s[maxn];
int main(){
    cin>>s+1;
    int n=strlen(s+1);
    for(int i=1;i<=n;i++)
    {
        if(s[i]=='0')a++;
        else b++;
    }
    if(a>b){
        for(int i=1;i<=n;i++)
        {
            printf("1");
        }
        puts("");
    }else if(a<b){
        for(int i=1;i<=n;i++)
        {
            printf("0");
        }
        puts("");
    }else{
        if(s[1]=='1'){
            printf("0");
            for(int i=2;i<=n;i++)
            {
                printf("1");
            }
            puts("");
        }else{
            printf("1");
            for(int i=2;i<=n;i++)
            {
                printf("0");
            }
            puts("");
        }
    }
} 
View Code

相关文章: