1. 程式人生 > >YTU OJ 3295: 最小二進位制數

YTU OJ 3295: 最小二進位制數

3295: 最小二進位制數

題目描述

如果字串由“0”和“1”組成並且沒有前導零,則可以將此字串稱為正確的 以下是一些示例:“0”,“10”,“1001”。 給你一個正確的字串s,您可以對此字串執行兩種不同的操作: 1. 交換任何一對相鄰字元(例如,“1 01” “1 10”); 2. 將“11”替換為“1”(例如,“11 0” “1 0”)。 設val(s)是一個數字,s是它的二進位制表示。 正確的字串a小於其他正確的字串b if (val(a)<  val(b))。 您的任務是找到可以使用上述操作從給定字串中獲取的最小正確字串。您可以按任何順序多次使用這些操作(甚至根本不使用任何操作)。

輸入

第一行為一個整數 n (1<=n <= 100)。 第二行為一個長度為n且只包含0或1的字串s, 保證字串s是正確的。

輸出

輸出一個您可以從給定字串中獲取的最小正確字串。

樣例輸入

4

1001

樣例輸出

100

#include<cstdio>
#include<iostream>
using namespace std;
int  main()
{
    char s[999];
    int n,m,i,j,k;
    int c0=0,c1=0;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>s[i];
        if(s[i]=='0')
            c0++;
        else
            c1++;
    }
    if(c1==0)
        cout<<0;
    else
    {
        cout<<1;
        for(i=0;i<c0;i++)
        {
            cout<<0;
        }
    }
    return 0;
}