笔试的时候我只调出来20%,后面找到原因了,也是一些小问题,要气死了
第二题也没有先做出来,还是该先做出来第一题再做第二题的
#include <iostream>
#include <vector>
#include <string>
#include <list>
using namespace std;
/*
3
2,5,6,7,9,5,7
1,7,4,3,4
2,5,6,1,7,4,7,9,5,3,4,7
*/
//变量用完记得清零!!!!!
int main()
{
int N;
cin >> N;
string str;
vector<string> vecStr;
while (cin >> str)
{
vecStr.push_back(str+',');
}
int MaxLen = 0;
for (int i = 0; i < vecStr.size(); i++)
{
if (vecStr[i].size() > MaxLen)
{
MaxLen = vecStr[i].size();
}
}
if (MaxLen % (2 * N) == 0)
{
MaxLen = MaxLen / (2 * N);
}
else
MaxLen = MaxLen / (2 * N) + 1;
string outStr;
vector<int> count(vecStr.size(),0);
vector<int> flag(vecStr.size(), 0);
for (int j = 0; j < MaxLen; j++)
{
for (int i = 0; i < vecStr.size(); i++)
{
string newStr = vecStr[i];
if (newStr.substr(count[i] * (2 * N)).size() >= N * 2)
{
outStr = outStr + newStr.substr(count[i] * (2 * N), N * 2);
count[i]++;
}
else if(flag[i] == 0)
{
outStr = outStr + newStr.substr(count[i] * (2 * N));
flag[i] ++;
}
}
}
cout << outStr.substr(0,outStr.size()-1) << endl;
return 0;
}
按Ctrl+Z,结束输入
意思代码经博友的提醒发现有问题,只能对个位数的数字有效。
在牛客网上找了一下结题思路,如下:
查找逗号的出现的次数
//附上别人的代码,我加了些注释
#include <iostream>
#include <vector>
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
int len;
cin >> len;
vector<string> allstr;
string strtemp;
int i, j, temp;
while (cin >> strtemp)
{
allstr.push_back(strtemp);
}
long long sumlen = 0;
for (i = 0; i < allstr.size(); i++)
{
sumlen += allstr[i].length();
}
string result;
int num = 0;
int l = 0;
while (sumlen)
{
for (i = 0; i < allstr.size(); i++)
{
if (allstr[i].length() != 0)
{
l = 0;//统计需要截取的字符长度
num = 0;//统计,号次数
for (j = 0; j < allstr[i].length(); j++)
{
l++;
if (allstr[i][j] == ',')
num++;//统计,号次数
if (num == len)
break;
}
if (num == len)//说明字符长度足够截取
{
result += allstr[i].substr(0, l);
allstr[i] = allstr[i].erase(0, l);
}
else//如果截取到尾部添加,
{
result += allstr[i];
result += ',';
allstr[i].erase(0);
}
}
}
sumlen = 0;
//重新获取所有字符串的长度
for (i = 0; i < allstr.size(); i++)
{
sumlen += allstr[i].length();
}
}
result.erase(result.length() - 1);
cout << result << endl;
return 0;
}