电信笔试,为何我第二题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;
} 这是怎么回事啊?求指点
查看11道真题和解析
