蓝桥杯冲刺(1)
1.蔡基姆拉尔森计算公式
又称蔡氏公式,计算星期几的方法
蔡基姆拉尔森计算公式(Zeller's congruence),又称蔡氏公式,是一种计算星期几的方法,公式如下:
蔡基姆拉尔森计算公式(Zeller's congruence),又称蔡氏公式,是一种计算星期几的方法,公式如下:
[w = (d + 2m + 3(m + 1) \ 5 + y + y \4 - y \100 + y \400) \bmod 7]
其中:
- (w)表示星期几((0)代表星期日,(1)代表星期一,以此类推);
- (d)表示日期;
- (m)表示月份((3)代表三月,(4)代表四月,以此类推,把一月和二月看成上一年的(13)月和(14)月);
- (y)表示年份(如果是一月或二月,则是上一年的年份)。
2.DFS深度优先运算
#include <iostream> #include <vector> using namespace std; void dfs(vector<bool> &arr1,vector<int> &arr2,int n,int x){//假设输入了n,相当于arr2的作用是提前设定了n个位置,每个位置都会有一个对应的数字(1-n中的任意一个),用arr1布尔数组的意义是判断它是否被使用过,使用过的函数是不能再次被使用的 if(x>n){ for(int i=1;i<=n;i++){ cout<<arr2[i]<<" "; } cout<<endl; return ;//因为用的是void函数,终止只能用return ;而不是return 0;(因为不能有返回值) } for(int i=1;i<=n;i++){ if(!arr1[i]){ arr1[i]=true;//代表这个时候i已经被使用了, arr2[x]=i; dfs(arr1,arr2,n,x+1);//不断地累计,不断的累计,一直到x>n终止,输出第一个排序 arr1[i]=false;//把这个数字恢复到初始状态,下一行排序这个数字就能再次使用了 } } } int main(){ int n; cin>>n; vector<bool> arr1(n+1); vector<int> arr2(n+1); for(int i=1;i<=n;i++){ arr1[i]=false; } dfs(arr1,arr2,n,1); return 0; }