華為od機(jī)試涼經(jīng) 2021-04-02

一星題

加密

怎么寫(xiě)都只能通過(guò)20%的用例,也不知道是我理解錯(cuò)了,還是速度上不去。

題的大意是:第一行輸入一個(gè)數(shù)字告訴你有多少行字符串需要加密,每行字符串不超過(guò)50個(gè)字符,輸入和輸出的字符串均是小寫(xiě)字母。

#include <string>
using namespace std;

int main()
{
    int n;
    string s;

    int a[50] = { 1,2,4 };

    for (unsigned char i = 3; i < 50; i++)
    {
        a[i] = a[i - 1] + a[i - 2] + a[i - 3];
        a[i] = a[i]%24;
    }

    cin >> n;

    while (n--)
    {
        cin >> s;

        for (size_t i = 0; i < s.size(); i++)
        {
            s[i] += a[i]%24;

            if (s[i] > 'z')
            {
                s[i] = s[i] - 'z' + 'a' - 1;
            }
        }

        cout << s << endl;
    }

    return 0;
}

終點(diǎn)可達(dá)

原題大意是:一串?dāng)?shù)字,從第一個(gè)開(kāi)始走,需要幾步能夠達(dá)到最后一個(gè)數(shù),返回步數(shù),或者是不能達(dá)到,返回-1;第一步的步長(zhǎng)最大為len/2,后面每一步的步長(zhǎng)都是它當(dāng)前所在位置的數(shù)字的大小。
我搞不定輸入輸出,也沒(méi)做出來(lái)。胡亂寫(xiě)的如下:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int find(vector<int> &vn, int goal, int maxFirst);
int findMin(vector<int> &vn);

int main()
{
    int n;
    int goal(0);
    int ret(-1);
    int maxFirst;
    vector<int> vn;

    while (cin>>n)
    {
        vn.push_back(n);
    }

    goal = vn.size() - 1;
    maxFirst = vn.size() / 2;

    ret = find(vn, goal, maxFirst);

    cout << ret<<endl;


    return 0;
}

int find(vector<int> &vn, int goal, int maxFirst)
{
    int ret(-1);
    vector<int> vns;
    for (int i = goal; i >= 0; i--)
    {
        if (i == 0)
        {
            i + maxFirst >= goal;
            return 1;
        }
        else if (i + vn[i] == goal)
        {
            // 這個(gè)if里面只有單次能成功的,沒(méi)有比較,這樣得不到最優(yōu)的
            ret = find(vn, i, maxFirst);
            if (ret != -1)
            {
                vns.push_back(ret + 1);
            }
        }
    }

    if (vns.size() == 0)
    {
        return -1;
    }
    else
    {
        return findMin(vns);
    }
    return 0;
}

int findMin(vector<int> &vn)
{
    int ret(0);

    for (size_t i = 0; i < vn.size(); i++)
    {
        ret = min(vn[i], ret);
    }

    return ret;
}

二星題

密碼排列

原題大意:給你一堆可能的數(shù)字,以及密碼的最少位數(shù),要求你寫(xiě)出所有可能的密碼組合,且不同的組合間按前面位的數(shù)字由小到大輸出,每行只輸出一個(gè)密碼。

我一看,同樣搞不定輸入輸出,直接交白卷了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 各校歷年復(fù)試機(jī)試試題 清華、北大、華科試題詳細(xì)筆記部分,少筆記部分與少數(shù)leetcode【含個(gè)人整理筆記】 一、詳...
    AIM外星人閱讀 1,333評(píng)論 0 1
  • 一、Java基礎(chǔ)1、String類為什么是final的,運(yùn)行速度,或者說(shuō)是執(zhí)行速度,在這方面運(yùn)行速度快慢為:Str...
    取名廢同學(xué)閱讀 1,084評(píng)論 0 0
  • 題目描述計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度,單詞以空格隔開(kāi)。輸入描述:一行字符串,非空,長(zhǎng)度小于5000。輸出描述:整數(shù)...
    馬淑閱讀 6,908評(píng)論 0 0
  • 1.題目大意 給定一個(gè)正整數(shù)數(shù)組,最大為100個(gè)成員,從第一個(gè)成員開(kāi)始,走到數(shù)組最后一個(gè)成員最少的步驟數(shù)。第一步必...
    Codeapes閱讀 2,560評(píng)論 0 0
  • 今日內(nèi)容大綱 。 pycharm的安裝及簡(jiǎn)單使用 。 格式化輸出 。 while循環(huán) 。運(yùn)算符(and or no...
    whykm閱讀 151評(píng)論 0 0

友情鏈接更多精彩內(nèi)容