#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
using namespace std;
string st1[20]={"tret","jan", "feb", "mar", "apr", "may", "jun","jly","aug","sep","oct", "nov","dec"};
string st2[20]={"tret","tam", "hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
string numToStr[170];
map<string,int> strToNum;
void init()
{
for(int i=0;i<13;i++)
{
numToStr[i]=st1[i];
strToNum[st1[i]]=i;
numToStr[i*13]=st2[i];
strToNum[st2[i]]=i*13;
}
for(int i=1;i<13;i++)
{
for(int j=1;j<13;j++)
{
string str=st2[i]+" "+st1[j];
numToStr[i*13+j]=str;
strToNum[str]=i*13+j;
}
}
}
int main()
{
init();
int t;
scanf("%d",&t);
getchar();
while(t--)
{
string str;
getline(cin,str);
if(isdigit(str[0]))
{
int num=0;
for(int i=0;i<str.length();i++)
{
num=num*10+(str[i]-'0');
}
cout<<numToStr[num]<<endl;
}
else
cout<<strToNum[str]<<endl;
}
return 0;
}
数据比较小,打表可以做
还有学到另一种吸收空格的%*c
然后如果不用map的话 借鉴大神的博客
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
using namespace std;
string st1[20]={"tret","jan", "feb", "mar", "apr", "may", "jun","jly","aug","sep","oct", "nov","dec"};
string st2[20]={"tret","tam", "hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
string numToStr[170];
map<string,int> strToNum;
void func1(string s)
{
int len=s.length(),num=0;
for(int i=0;i<len;i++)
{
num=num*10+(s[i]-'0');
}
if(num/13)
{
cout<<st2[num/13];
if(num%13)
cout<<' '<<st1[num%13];
}
else
cout<<st1[num%13];
}
void func2(string s)
{
int len=s.length(),num=0;
if(len==4)
{
cout<<0;
return;
}
else if(len==3)
{
for(int i=1;i<=12;i++)
{
if(s==st1[i])
{
cout<<i;
return;
}
if(s==st2[i])
{
cout<<i*13;
return;
}
}
}
else
{
string temp1=s.substr(0,3),temp2=s.substr(4,3);
for(int i=1;i<=12;i++)
{
if(temp1==st2[i])
num+=i*13;
if(temp2==st1[i])
num+=i;
}
cout<<num;
}
return;
}
int main()
{
int t;
scanf("%d",&t);
getchar();
while(t--)
{
string str;
getline(cin,str);
if(isdigit(str[0]))
{
func1(str);
}
else
func2(str);
cout<<endl;
}
return 0;
}
巧利用字符串的长度