版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29978597/article/details/86012825
1.经典算法
1.1.排序类问题
1.1.1 解题思路
利用sort函数,根据题目所给的条件定义不同的cmp排序规则。
1.1.2 sort函数的用法
有两种形式:
- sort(arr,arr+N):
默认形式,按照从小到大的顺序排列。 - sort(arr,arr+N,cmp):
传入的cmp函数用于自定义排序规则。
例如:
//按照从大到小的顺序排列
bool cmp(int x,int y){
return x>y;
}
1.2.日期类问题
1.2.1 解题思路
注意考虑特殊情况,闰年2月29天。
1.2.2 参考代码
int daytab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//给出年月日,求是一年的第几天
int printdayofyear(int year,int month,int day){
if(year%4==0&&year%100!=0||year%400==0)//如果是闰年
daytab[2]=29;
else
daytab[2]=28;
for(int i=1;i<month;i++)
day+=daytab[i];
printf("%d年的第%d天\n",year,day);
}
//给出一年的第几天,输出月日
void printyymmdd(int year,int &month,int &day){
if(year%4==0&&year%100!=0||year%400==0)//如果是闰年
daytab[2]=29;
else
daytab[2]=28;
month=1;
while(day>daytab[month]){
day-=daytab[month++];
}
printf("%04d-%02d-%02d\n",year,month,day);
}