题意:给你一组每个月的天数,问你能否在现实中出现.
解:可以利用字符串来做,即输入一行字符串,查询时候否是可能出现天数的子串.
这时,大部分人可能会用什么高级算法,容易把问题复杂化,在学c语言初期,有一个函数,strstr();可以判断子串,用它就可以.
要注意的是,出现的天数可能横跨3个年份,还必须考虑闰年,有四种可能分别是:平平闰,闰平平,平闰平,闰平闰.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[50000]={" 31 28 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 31 29 31 30 31 30 31 31 30 31 30 31 "};
char b[50000]={" 31 29 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 31 29 31 30 31 30 31 31 30 31 30 31 "};
char c[50000]={" 31 28 31 30 31 30 31 31 30 31 30 31 31 29 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 "};
char e[50000]={" 31 29 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 31 28 31 30 31 30 31 31 30 31 30 31 "};
int main()
{
char d[50000];
int n;
cin>>n;
getchar();
memset(d,0,sizeof(d));
gets(d);
int flag=0;
if(strstr(a,d)!=NULL)
flag=1;
if(strstr(b,d)!=NULL)
flag=1;
if(strstr(c,d)!=NULL)
flag=1;
if(strstr(e,d)!=NULL)
flag=1;
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
return 0;
}