一封奇怪的信---網易遊戲(互娛)-遊戲測試開發工程師真題 題解
阿新 • • 發佈:2018-12-25
一封奇怪的信
時間限制: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; }