1.合法日期


#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<string,int>mp;
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
for(int i=1;i<=12;i++)
{
for(int j=1;j<=days[i];j++)
{
string s=to_string(i)+to_string(j);
mp[s]=1;
}
}
string m,d;
cin>>m>>d;
m+=d;
if(mp[m])cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}
2.删除字符


#include <iostream>
#include <string>
using namespace std;
//使字典序最小,即删掉字典序大的
//可以删除q次
//在删除每一次时,把每一个字母删掉都试一下是不是比之前的小,如果是则贡献答案
int main()
{
string s;
cin>>s;
string s1,s2,s3;
s2=s3=s;
int q;
cin>>q;
while(q--)
{
for(int i=0;i<s.size();i++)
{
s3=s;//原来的(保证每次for循环挑选出一位)
s1=s3.erase(i,1);//从i开始删除1位
if(s1<s2)//s2表示上一个答案
{
s2=s1;
}
}
s=s2;//for循环结束后更新s
}
cout<<s<<endl;
return 0;
}
3.最小谈判