特定大小的停车场,数组cars[ ]表示,其中1代表有车,0代表无车,车辆大小不一,统计停车场最少可以停多少辆车,返回具体的数字。长度小于1000
输入:小车占一个车位(长度1),中车占两个车位(长度2),大车占三个车位(长度3)
输出:整形数字字符串,表示最少停车数目
eg:
输入:1,1,0,0,1,1,1,0,1
输出:3
输入:1,0,1
输出:2
...
#include <iostream>
#include <string>
#include<vector>
#include<cstdlib>
#include<sstream>
using namespace std;
int MinCarNum(vector<int>& VecData){
int iNumOfCar = 0;
int iCount = 0;
while (iCount < VecData.size())
{
if (VecData[iCount] == 0)
{
if (iCount + 1 < VecData.size() && VecData[iCount + 1] == 0)
{
if (iCount + 2 < VecData.size() && VecData[iCount + 2] == 0)
{
++iNumOfCar;
iCount += 3;
}
else
{
++iNumOfCar;
iCount += 2;
}
}
else
{
++iNumOfCar;
++iCount;
}
}
++iCount;
}
return iNumOfCar;
}
void func1()
{
string str;
string abc;
getline(cin, str);
vector<int> mVec;
int i,j;
int num = 0;//数字字符串转换为整型数字
for (i = 0; i < str.size(); i++) {
if (str[i] == '1'|| str[i] == '0') {
abc = str.substr(i, 1);
stringstream s1(abc);
s1 >> num;
mVec.push_back(num);
}
}
cout << MinCarNum(mVec);
}
void main()
{
func1();
}