电信笔试,为何我第二题60%,第三题20%?
很纳闷,难得碰上这么简单的题,调了很久也没发现哪里错了,大佬们可以帮我指明一下吗?
第二题:
#include<iostream> #include<string> #include<vector> using namespace std; string Tran(int nNum) { vector<string>v4 = { "","M","MM" ,"MMM" ,"MMMM" ,"MMMMM" ,"MMMMMM" ,"MMMMMMM" ,"MMMMMMMM" ,"MMMMMMMMM" }; vector<string>v3 = { "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM" }; vector<string>v2 = { "","X","XX" ,"XXX" ,"XL" ,"L" ,"LX" ,"LXX" ,"LXXX" ,"XC" }; vector<string>v1 = { "","I","II" ,"III" ,"IV" ,"V","VI","VII","VIII","IX" }; return v4[nNum / 1000] + v3[nNum / 100] + v2[nNum / 10] + v1[nNum % 10]; } int main() { int nNum; cin >> nNum; cout << Tran(nNum) << endl; }
第三题:
#include<iostream> #include<vector> #include<string> #include<sstream> #include<limits.h> using namespace std; int MaxSum(vector<int>&vNums) { const int nSize = vNums.size(); int nMaxSum = INT_MIN; int nCurSum = 0; for (int i = 0; i < nSize; ++i) { if (nCurSum >= 0) { nCurSum += vNums[i]; } else { nCurSum = vNums[i]; } if (nCurSum > nMaxSum) nMaxSum = nCurSum; } return nMaxSum; } int main() { string str; cin >> str; str = str.substr(1, str.size() - 2);//去掉左右括号; stringstream ss(str); vector<int>vNums; while (getline(ss, str, ',')) vNums.push_back(atoi(str.c_str())); cout << MaxSum(vNums) << endl; }这是怎么回事啊?求指点