一封奇怪的信---網易遊戲(互娛)-遊戲測試開發工程師真題 題解

一封奇怪的信

時間限制:1秒

空間限制:32768K

現在你需要用一臺奇怪的打字機書寫一封書信。信的每行只能容納寬度爲100的字符,也就是說如果寫下某個字符會導致行寬超過100,那麼就要另起一行書寫

信的內容由a-z的26個小寫字母構成,而每個字母的寬度均會事先約定。例如字符寬度約定爲[1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],那麼就代表'a'到'd'四個字母的寬度分別是1,2,3,4,而'e'到'z'的寬度均爲5

那麼按照上述規則將給定內容S書寫成一封信後,這封信共有幾行?最後一行寬度是多少?

 

輸入描述:

輸入爲兩行:
第一行是存儲了每個字符寬度的字符串,包含26個數字,以1個空格分隔,每個數字均小於等於10
第二行是存儲了待輸入字符的字符串S,字符串S的長度在1到1000之間


 

輸出描述:

輸出爲信的行數以及最後一行所包含的字符個數,中間以1個空格分隔

 

輸入例子1:

5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
helloworld

 

輸出例子1:

1 50

 

例子說明1:

"5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5"規定每個字符寬度爲5
"helloworld"是輸入的字符串S
由於S共包含10個字符,也即共佔用50個字符寬度,因此可以寫在同一行

 

輸入例子2:

5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 5 5 5 5 5 5 5 5
hahahahahahahaha

 

輸出例子2:

2 20

 

例子說明2:

"5 5 5 5 5 5 10 10 10 10 10 10 10 10 10 10 10 10 5 5 5 5 5 5 5 5"規定了每個字符寬度
"hahahahahahahaha"是輸入的字符串S
由於h寬度爲10,a寬度爲5,因此'hahahahahahah'佔用100字符寬度可以寫在第一行,‘aha’寫在第二行也即最後一行。因此字符寬度爲20
#include <iostream>
#include <string.h>
#include <map>
using namespace std;
int main()
{
    map<char,int> m;
    char c='a';
    for(int i=0;i<26;++i)
        cin>>m[c++];
    char s[1100];
    cin>>s;
   int sum=0;
    int n=0;
    for(int i=0;i<strlen(s);i++)
    {
        if(sum+m[s[i]]>100)
        {
            n++;
            sum=m[s[i]];
        }
        else
        {
            sum+=m[s[i]];
        }
    }
    cout<<n+1<<" "<<sum;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章