今天的题,leetcode上的。想起来之前遇到过这个问题,我的写法很简单,用的是系统提供的,怎么说呢?这是个数学问题。其实,大部分的算法,都涉及到数学问题。
string dayOfTheWeek(int day, int month, int year) {
vector<string> week = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
vector<int> monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};
int days = 365 * (year - 1971) + (year - 1969) / 4;
for (int i = 0; i < month - 1; ++i) {
days += monthDays[i];
}
if ((year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) && month >= 3) {
days += 1;
}
days += day;
return week[(days + 3) % 7];
}
怎么说呢,看看,都是数学问题,并不是程序本身的问题。不仅仅是靠编程就可以解决的,但是编程又是基础,依靠它,然后加上一些其他方向的原理,问题迎刃而解。
ps:每天学点数学知识,读点相关内容,提升从一丢丢开始。
网友评论