牛客网——华为机试题库(94-108)

T94. 计票统计

T95. 人民币转换

T96. 表示数字

#include 
#include 
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        for(int i=0; i<s.size(); i++)
        {
            if(s[i]>='0'&&s[i]<='9'&&(i==0||s[i-1]<'0'||s[i-1]>'9'))
            {
               s=s.substr(0,i)+"*"+s.substr(i);
               i++;
            }
            if(s[i]>='0'&&s[i]<='9'&&(i+1==s.length()||s[i+1]<'0'||s[i+1]>'9'))
            {
               s=s.substr(0,i+1)+"*"+s.substr(i+1);
               i++;
            }
        }
        cout << s << endl;
    }
    return 0;
}

T98. 自动售货系统

T102. 字符统计

#include
#include
#include
#include
#include
using namespace std;

bool cmp(pair<char,int> a, pair<char,int> b){
    if(a.second!=b.second)
    {
        return a.second > b.second;
    }
    else
    {
        return a.first < b.first;
    }
}

int main()
{
    string s;
    while(cin>>s)
    {
        string res;
        vector<pair<char,int>> v;
        unordered_map<char,int> m;
        for(auto c : s)
        {
            if(c==' ' ||(c>=48 && c<=57) ||(c>=65 && c<=90) || (c>=97 && c<=122))
            {
                m[c]++;
            }
        }
        for(auto i : m)
        {
            v.push_back({i.first,i.second});
        }
        sort(v.begin(),v.end(),cmp);
        for(auto j : v)
        {
            res += j.first;
        }
        cout<<res<<endl;
    }
    return 0;
}

T103. Redraiment的走法

#include 
using namespace std;

int main()
{
    int n;
    while(cin>>n)
    {
        int a[65535];
        int dp[65535];
        for(int i=0;i<n;i++)
            cin>>a[i];
        dp[0]=1;
        int out=0;
        for(int i=1;i<n;i++)
        {
            dp[i]=1;
            for(int j=0;j<i;j++)
            {
                if(a[i]>a[j])
                    dp[i]=max(dp[i],dp[j]+1);
            }
            if(dp[i]>out)
                out=dp[i];
        }
        cout<<out<<endl;
    }
    return 0;
}

T105. 记负均正II

#include
 
using namespace std;
 
int main()
{
    int num;
    int count=0;
    int count1=0;
    double sum=0.0;
    while(cin>>num)
    {
        if(num<0)
        {
            count++;
        }
        else
        {
            count1++;
            sum+=num;
        }
    }
    cout<<count<<endl;
    cout<<fixed;
    cout.precision(1);
    cout<<(double)sum/count1<<endl;
    return 0;
}

T107. 求解立方根

#include

using namespace std;

int main()
{
    double n;
    double i;
    bool flag;
    while(cin >> n)
    {     
        flag = 0;
        if(n < 0)
        {
            n = -n;
            flag = 1;
        }
        for(i = 0; i*i*i <= n; i=i+0.01);
        if(flag==0)
        {
            cout << fixed;
            cout.precision(1);
            cout << i << endl;
        }
        else
        {
            cout << fixed;
            cout.precision(1);
            cout << -i << endl;
        }
    }
    return 0;
}

T108. 求最小公倍数

#include 

using namespace std;

int gcd(int a, int b)
{
    return (b == 0) ? a : gcd(b, a%b);
}

int main()
{
    int a;
    int b;
    int out = 0;
    while(cin >> a >> b)
    {
        out = a * b / gcd(a, b);
    }
    cout << out << endl;
    
    
    return 0;
}

你可能感兴趣的:(牛客-华为题库,算法)