zoukankan      html  css  js  c++  java
  • zoj 2420 Calendar 将结构体存在向量里

    题目地址 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1420

     思路:

    一开始看这个题觉得题意简单但不同的月份有不同的天数,有点不知怎么方便的解决。 然后想到打表的方法,把每一天的信息作为一个结构体,一一存在向量里面,向量的角标是自增的,刚好就是里2000-01-01的天数。

     注意

    1 闰年的判断 

    2输出格式 1-1要写成 01-01

    3 超内存问题  要把三个属性值设置成 short int ,直接int会超内存 

    4 星期问题,2000-01-01是周六  所以第n天就是 周(n+6)%7

    代码:

    #include<iostream>
    #include<string>
    #include<vector>
    using namespace std;
    
    struct date
    {
      short year;
      short month;
      short day;
    };
    
    bool isleap(int n)
    {
     if(n%4==0&&n%100!=0)  return 1;
     if(n%400==0)   return 1;
     return 0;
    
    }
    int shortmonth(int n)
    {
       if(n==2||n==4||n==6||n==9||n==11)
       return 1;
       else
       return 0;
    }
    int main()
    {
      int n;
      string * day=new string[7];
      day[0]="Monday";
      day[1]="Tuesday";
      day[2]="Wednesday";
      day[3]="Thursday";
      day[4]="Friday";
      day[5]="Saturday";
      day[6]="Sunday";
    
    
      vector<date> v;
       for(int i=2000;i<10000;i++)
           for(int j=1;j<=12;j++)
             for(int k=1;k<=31;k++)
          {
               if(j==2&&isleap(i)&&k>29) continue;
               if(j==2&&(!isleap(i))&&k>28) continue;
               if(shortmonth(j)&&k>30)  continue;
               date today;
               today.year=i;
               today.month=j;
               today.day=k;
               v.push_back(today);
            }
      while(cin>>n)
      {
         if(n==-1)  break;
         cout<<v[n].year<<"-";
    
         if(v[n].month<10)
         cout<<"0";
    
         cout<<v[n].month<<"-";
    
         if(v[n].day<10)
         cout<<"0";
    
    
         cout<<v[n].day<<" ";
         cout<<day[(n+5)%7]<<endl;
    
      }
    }
    


  • 相关阅读:
    Codeforces Round #311 (Div. 2)
    hdu5441 并查集+克鲁斯卡尔算法
    hdu5439 二分
    hdu5422 最大表示法+KMP
    hdu3374 最大最小表示法 +kmp
    hdu2609最小表示法
    hdu4870 高斯消元
    关于并发编程是使用synchronized,lock?
    关于项目中遇到的问题-- trycatch 手动回滚事务
    关于项目中遇到的问题-- 请求接收的参数发生改变情况
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3217963.html
Copyright © 2011-2022 走看看