----------/日期问题/----------
#include <bits/stdc++.h>
using namespace std;
-----//查重排序//-----
set<string> ans;
------//整型转字符串//-----
string its(int x)
{
stringstream ss;
ss << x;
string s;
ss >> s;
return s;
}
-----//字符串转整型//-----
int sti(string s)
{
stringstream ss;
ss << s;
int x;
ss >> x;
return x;
}
-----//判断闰年//-----
bool is(int y)
{
return (y % 4 == 0 && y % 100 != 0 || y % 400 == 0);
}
-----//模拟十二个月//-----
int mon[13] = { -1,31,28,31,30,31,30,31,31,30,31,30,31 };
-----//计算并储存答案//-----
void getans(int y,int m,int d)
{
-----//判断二十世纪或者二十一世纪//-----
if (y >= 60) y += 1900;
else y += 2000;
string year, month, day;
if (m < 1 || m>12) return;
if (is(y)) mon[2] = 29;
else mon[2] = 28;
if (d<1 || d>mon[m]) return;
year = its(y);
if (m <= 9)
month = "0" + its(m);
else month = its(m);
if (d <= 9)
day = "0" + its(d);
else day = its(d);
-----//注意格式//-----
string cnt = year + "-" + month + "-" + day;
-----//储存答案//-----
ans.insert(cnt);
}
int main()
{
string str;
cin >> str;
int a = sti(str.substr(0, 2));
int b = sti(str.substr(3, 5));
int c = sti(str.substr(6));
getans(a, b, c);
getans(c, a, b);
getans(c, b, a);
-----//历遍输出//-----
for (auto x : ans)
cout << x<< endl;
return 0;
}
思路很清晰,很容易明白,就是那个字符串和整形之间的互换可以用stoi()和to_string()函数吗,如果可以,会方便些,当然上面那个int 和string 相互转换的方法我是第一次接触,学到了学到了,感谢分享!