1.题目 : 题目名字不记得去了, 题目的总结,就是有一个人的短信需要大写!,
每个单词的首字母:
代码:
/******************************
*作者: she001
*时间: 2022/10/23
*题目: 大写语句的首字母, 列子 : assss ssss ssss --> Assss Ssss Ssss
*字符串为空的时候,我们返回NULL,
********************************/
#include<bits/stdc++.h>
using namespace std;
string fangfa_1(string a)
{
if(a=="")
{
return NULL;
}
int n=a.size();
for(int i=0;i<n;i++)
{
if(i==0 || a[i-1]==' ')
{
if(a[i]>=97)
{
a[i]=a[i]-32;
}
}
}
return a;
}
int main()
{
string a="asss aaa aaa jkkk";
string b=fangfa_1(a);
cout<<b<<endl;;
}
2.出租车问题
题目不记得去了, 题目的主要内容: 有一个出租车公司,在一个场地有一个业务,需要取接几个人,场地上的人的来去时间不同,每个出租车可以做无限个人,只要每一个人的时间没有交叉,看看需要几个出租车!
列子:
{ {2 ,6}, {3,5},{7,9} } 3个出租车
{ {1,2},{3,4},{5,6},{7,8}} 1个出租车
代码:
/******************************
*作者: she001
*时间: 2022/10/23
*题目: 出租车问题
********************************/
#include<bits/stdc++.h>
using namespace std;
bool cmp(vector<int>a,vector<int>b)//排序 sort 的对比函数 对比规则: //因为知道两个数据
{
if(a[0]!=b[0])//先对比第一个数据, 假如不同
{
return a[0]<b[0];//升序排序
}
else//第一个数据加入相同
{
return a[1]<=b[1];//第二个数据 的对比
}
}
int fangfa_1(vector< vector<int> >&a)
{
int num=0;//要求派遣出租车的数量
int n=a.size();//获取顾客的数量
//cout<<"顾客的数量: "<<n<<endl;
if(n==0)
{
return 0;
}
if(n==1)
{
return 1;
}
//显示数据 看自己 需要 不
/*
vector< vector<int> >::iterator it1=a.begin();
for(it1=a.begin();it1!=a.end();it1++)
{
vector<int>it2=*it1;
for(int i=0;i<2;i++)
{
cout<<it2.at(i)<<" ";
}
cout<<endl;
}
*/
// a 里面的 vector<int> 数据 根据 第一个数据排序 由低到高 假如第一个数据相同 比第二个数据
sort(a.begin(),a.end(),cmp);//数据排序 第 cmp 函数的对比
//显示数据 看自己 需要 不
/*
vector< vector<int> >::iterator it1=a.begin();
for(it1=a.begin();it1!=a.end();it1++)
{
vector<int>it2=*it1;
for(int i=0;i<2;i++)
{
cout<<it2.at(i)<<" ";
}
cout<<endl;
}
*/
int aaa=0;//判断是否是第一辆车
int bbb=0; //匹配的数字
vector< vector<int> >::iterator ggg;//防止出现 bug
while(a.size()!=0)//利用动态数组的元素 删除的方法 来获取出租车的数量
{
vector< vector<int> >::iterator it3=a.begin();
aaa=0;//重置数据 下一个出租车的开始数据
bbb=0;//
while(it3!=a.end())
{
vector<int>it4=*it3;
if(aaa==0)//第一个数据直接 出租车获取数据
{
aaa=1; //第一个数据的判定直接关闭
bbb=it4[1]+1;//记录尾部数据 第二个可以搭乘顾客的数据的开始数据
a.erase(it3);//删除这个数据, 遍历下一个数据 it3 删除当前数据 直接变为下一个数据
}
else if(bbb<=it4[0])
{
bbb=it4[1]+1;
a.erase(it3);//删除这个数据, 遍历下一个数据
}
else
{
it3++;//这个数据没有匹配, 直接下一个元素
}
}
num++;//出租车的数量加 1
}
return num; //返回出租车的数量
}
int main()
{
vector<int>a1;//建立顾客的模型
a1.push_back(1);//顾客的时间加载
a1.push_back(2);
vector<int>a2;
a2.push_back(1);
a2.push_back(4);
vector<int>a3;
a3.push_back(3);
a3.push_back(6);
vector<int>a4;
a4.push_back(7);
a4.push_back(8);
vector< vector<int> >q;//建立业务的产生
q.push_back(a1);
q.push_back(a2);
q.push_back(a3);
q.push_back(a4);
int n=fangfa_1(q);
cout<<"n: "<<n<<endl;
vector<int>b1;//建立顾客的模型
b1.push_back(1);//顾客的时间加载
b1.push_back(2);
vector<int>b2;
b2.push_back(3);
b2.push_back(4);
vector<int>b3;
b3.push_back(5);
b3.push_back(6);
vector<int>b4;
b4.push_back(7);
b4.push_back(8);
vector< vector<int> >q1;//建立业务的产生
q1.push_back(b1);
q1.push_back(b2);
q1.push_back(b3);
q1.push_back(b4);
int n1=fangfa_1(q1);
cout<<"n1: "<<n1<<endl;
}