当前位置:   article > 正文

顺子日期(c语言)

顺子日期

题目:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 yyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期?

要求:

最大运行时间:1s
最大运行内存: 512M

思路:

采用枚举法,从2022年1月1日进行循环,每回日期++(期间调用函数看是否要加月份),再对新日期进行判断,看这个日期是否满足顺子要求。

我是把这个日期放进数组中,对数组的前六个元素进行遍历看是否满足,但同时要求仅有三个元素满足,题目中没有说必须只有三个元素满足)

代码:

(一开始的方法)

  1. #include<stdio.h>
  2. int yi(int y)
  3. {
  4. int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  5. return a[y];
  6. }
  7. int main()
  8. {
  9. //2020年是平年
  10. int n=2022,y=1,r=1,i,j,cnt=0,flag;
  11. while(1)
  12. {
  13. int a[8]={0};
  14. r++;
  15. if(r>yi(y))
  16. {
  17. r=1;
  18. y++;
  19. if(y>12)
  20. {
  21. break;
  22. }
  23. }//处理日期自增
  24. a[7]=r%10;
  25. a[6]=r/10%10;
  26. a[5]=y%10;
  27. a[4]=y/10%10;
  28. a[3]=n%10;
  29. a[2]=n/10%10;
  30. a[1]=n/100%10;
  31. a[0]=n/1000;
  32. //写入数组
  33. for(i=0;i<=5;i++)
  34. {
  35. flag=1;
  36. // if(a[i]==0)
  37. // continue;
  38. for(j=1;j<=2;j++)
  39. {
  40. if(a[j+i]!=a[j+i-1]+1)
  41. {
  42. flag=0;
  43. break;
  44. }
  45. }
  46. if(flag&&a[i+3]!=a[i+2]+1)//注意只有三个相邻
  47. {
  48. cnt++;
  49. }
  50. }
  51. }
  52. printf("%d\n",cnt);
  53. return 0;
  54. }

(太麻烦啦!没必要对所有的日期进行遍历,再都修改成数组的形式进行修改)

  1. //另一种方法的顺子日期(改良版)
  2. //不要上来就暴力,对所有日期进行枚举判断
  3. //分析2022年与后面的月份一定够不成顺子
  4. //即我只需要对后面的月份和日进行判断即可
  5. //而构成顺子日期就一定需要中间两位满足顺子的要求
  6. //那么就不需要枚举k了直接j+1就行
  7. #include<stdio.h>
  8. int ri(int y)
  9. {
  10. int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年
  11. return a[y];
  12. }
  13. int main()
  14. {
  15. int num=0,i,j,k,l,y,r;
  16. for(i=0;i<=1;i++)//月份的十位
  17. for(j=0;j<10;j++)
  18. {
  19. k=j+1;
  20. for(l=0;l<10;l++)
  21. {
  22. y=i*10+j;
  23. r=k*10+l;
  24. if(y<=12&&r<=ri(y)&&(i+1==j||k+1==l))
  25. num++;
  26. }
  27. }
  28. printf("%d",num);
  29. return 0;
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/388630
推荐阅读
相关标签
  

闽ICP备14008679号