一个比较全的C++农历算法(转)

这以前本是一个MFC代码,我在这个基础上修改成了标准C++的..
即可以在VC里用,也可以在C++Builder里用..所以一并放到这里来,
希望有人喜欢..喜欢的就给点鼓励啊~~
示例代码:
代码:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
      xDate *Date_x=new xDate();//取系统时间初始化-:) 

        Memo1->Lines->Add("公历"+IntToStr(Date_x->GetYear()) +"年");
        Memo1->Lines->Add("公历"+IntToStr(Date_x->GetMonth())+"月");
        Memo1->Lines->Add("公历"+IntToStr(Date_x->GetDay())  +"日");
        if(Date_x->IsLeapYear(Date_x->GetYear())) 

                Memo1->Lines->Add("今年是闰年");
        else
                Memo1->Lines->Add("今年不是闰年"); 

        Memo1->Lines->Add("今天是星期"+IntToStr(Date_x->WeekDay(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay())));
        Memo1->Lines->Add("公历:本月"+IntToStr(Date_x->MonthDays(Date_x->GetYear(),Date_x->GetMonth()))+"天");
        Memo1->Lines->Add("阴历:本月"+IntToStr(Date_x->LunarMonthDays(Date_x->GetYear(),Date_x->GetMonth()))+"天");
        Memo1->Lines->Add("阴历今年:"+IntToStr(Date_x->LunarYearDays(Date_x->GetYear()))+"天");
        //==================================================================//
        char ch0[20]="天干记年法表示:";
        char Buffer0[8];
        Date_x->FormatLunarYear(Date_x->GetYear(),Buffer0);
        strcat(ch0,Buffer0);
        Memo1->Lines->Add(ch0);
        //==================================================================//
        char ch1[20]="月份中文表示法:";
        char Buffer1[8];
        Date_x->FormatMonth(Date_x->GetMonth(),Buffer1,true);
        strcat(ch1,Buffer1);
        Memo1->Lines->Add(ch1);
        //==================================================================//
        char ch2[20]="Day中文表示法:";
        char Buffer2[8];
        Date_x->FormatLunarDay(Date_x->GetDay(),Buffer2);
        strcat(ch2,Buffer2);
        Memo1->Lines->Add(ch2);
        //==================================================================//
        //计算两个日期相差的天数
        Memo1->Lines->Add("距1956,2,21有:"+IntToStr(Date_x->CalcDateDiff(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay(),1956,2,21))+"天"); 

        //节气计算
        WORD iLunarYear,  iLunarMonth,  iLunarDay;
        WORD  n;
        n=Date_x->GetLunarDate(Date_x->GetYear(),Date_x->GetMonth(),Date_x->GetDay(),iLunarYear,iLunarMonth,iLunarDay);
        if(n)
                Memo1->Lines->Add(IntToStr(n));
        else
                Memo1->Lines->Add("不是节气"); 

        Memo1->Lines->Add("今天阴历是:"+IntToStr(iLunarYear)+"-"+IntToStr(iLunarMonth)+"-"+IntToStr(iLunarDay)); 

}
//---------------------------------------------------------------------------

头文件:
代码:

//xDate.h
/************************************************************************************************************
               Author  :xShandow
         Dest    :A Date Class For C++
         Email   :[email protected]
         HomePage:http://www.hftd.com
         Dev Env :Visual C++6.0
         OS.     :Windows 2000 Professinal
         Date    :2003-NOV-15
 ************************************************************************************************************/
#ifndef XDATE_H
#define XDATE_H  

#include <windows.h>
extern const WORD START_YEAR;
extern const WORD END_YEAR ; 

class xDate
{
private:
   WORD    m_iYear, m_iMonth, m_iDay;
   void    l_InitData();
   //计算从1901年1月1日过iSpanDays天后的阴历日期
   static void   l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay,LONG iSpanDays);
   //计算公历iYear年iMonth月iDay日对应的节气 0-24,0表不是节气
   static WORD   l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay);
public:
   //=====================================================================================//
   xDate(WORD iYear, WORD iMonth, WORD iDay);
   xDate();
   //=====================================================================================//

   WORD GetYear(){return m_iYear;}
   WORD GetMonth(){return m_iMonth;}
   WORD GetDay(){return m_iDay;}  

   //=====================================================================================//
   void GetDate(WORD &iYear, WORD &iMonth, WORD &iDay);
   BOOL SetDate(WORD iYear , WORD iMonth , WORD iDay);
   //=====================================================================================//
   //判断iYear是不是闰年
    static BOOL IsLeapYear(WORD iYear)  {return !(iYear%4)&&(iYear%100) || !(iYear%400);}  

   //计算iYear,iMonth,iDay对应是星期几 1年1月1日 --- 65535年12月31日
   static WORD WeekDay(WORD iYear, WORD iMonth, WORD iDay); 

   //返回iYear年iMonth月的天数 1年1月 --- 65535年12月
   static WORD MonthDays(WORD iYear, WORD iMonth);  

   //返回阴历iLunarYer年阴历iLunarMonth月的天数,如果iLunarMonth为闰月,
   //高字为第二个iLunarMonth月的天数,否则高字为0
   // 1901年1月---2050年12月
   static LONG LunarMonthDays(WORD iLunarYear, WORD iLunarMonth);  

   //返回阴历iLunarYear年的总天数
   // 1901年1月---2050年12月
   static WORD LunarYearDays(WORD iLunarYear);  

   //返回阴历iLunarYear年的闰月月份,如没有返回0
   // 1901年1月---2050年12月
   static WORD GetLeapMonth(WORD iLunarYear);  

   //把iYear年格式化成天干记年法表示的字符串
   static void FormatLunarYear(WORD  iYear, char *pBuffer);  

   //把iMonth格式化成中文字符串
   static void FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar = TRUE);  

   //把iDay格式化成中文字符串
   static void FormatLunarDay(WORD  iDay, char *pBuffer); 

   //计算公历两个日期间相差的天数  1年1月1日 --- 65535年12月31日
   static LONG CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,WORD iStartYear = START_YEAR,WORD iStartMonth =1, WORD iStartDay =1);  

   //计算公历iYear年iMonth月iDay日对应的阴历日期,返回对应的阴历节气 0-24
   //1901年1月1日---2050年12月31日
   static WORD GetLunarDate(WORD iYear, WORD iMonth, WORD iDay,WORD &iLunarYear, WORD &iLunarMonth, WORD &iLunarDay);
};  

#endif //XDATE_H

类实现:
代码:

//xDate.cpp
#include "xDate.h"
//#include <windows.h> 

extern WORD gLunarMonthDay[];
extern BYTE gLunarMonth[];
extern BYTE gLunarHolDay[];  

const  WORD START_YEAR =1901;
const  WORD END_YEAR   =2050;
//===========================================================================//
void xDate::l_InitData()
{
   SYSTEMTIME systime;
   ::GetSystemTime(&systime);  

   m_iYear  = systime.wYear;
   m_iMonth = systime.wMonth;
   m_iDay   = systime.wDay;
}
//===========================================================================//
xDate::xDate(WORD iYear, WORD iMonth, WORD iDay)
{
   if(!SetDate(iYear, iMonth, iDay))
      l_InitData();
}
//===========================================================================//
xDate::xDate()
{
   l_InitData();
}
//===========================================================================//
LONG xDate::CalcDateDiff(WORD iEndYear, WORD iEndMonth, WORD iEndDay,WORD  iStartYear, WORD iStartMonth, WORD iStartDay)
{
   WORD monthday[]={0, 31, 59 ,90, 120, 151, 181, 212, 243, 273, 304, 334};
   //计算两个年份1月1日之间相差的天数
   LONG iDiffDays =(iEndYear - iStartYear)*365;
   iDiffDays += (iEndYear-1)/4 - (iStartYear-1)/4;
   iDiffDays -= ((iEndYear-1)/100 - (iStartYear-1)/100);
   iDiffDays += (iEndYear-1)/400 - (iStartYear-1)/400;
   //加上iEndYear年1月1日到iEndMonth月iEndDay日之间的天数
   iDiffDays += monthday[iEndMonth-1] +
      (IsLeapYear(iEndYear)&&iEndMonth>2? 1: 0);
   iDiffDays += iEndDay;
   //减去iStartYear年1月1日到iStartMonth月iStartDay日之间的天数
   iDiffDays -= (monthday[iStartMonth-1] +(IsLeapYear(iStartYear)&&iStartMonth>2 ? 1: 0));
   iDiffDays -= iStartDay;
   return iDiffDays;
}
//===========================================================================//
void  xDate::l_CalcLunarDate(WORD &iYear, WORD &iMonth ,WORD &iDay, LONG iSpanDays)
{
   //阳历1901年2月19日为阴历1901年正月初一
   //阳历1901年1月1日到2月19日共有49天
   if(iSpanDays <49)
   {
      iYear = START_YEAR-1;
      if(iSpanDays <19)
      {
         iMonth = 11;
         iDay = 11+WORD(iSpanDays);
      }
      else
      {
         iMonth = 12;
         iDay = WORD(iSpanDays) -18;
      }
      return ;
   }
   //下面从阴历1901年正月初一算起
   iSpanDays -=49;
   iYear = START_YEAR;
   iMonth = 1;
   iDay = 1;
   //计算年
   LONG tmp = LunarYearDays(iYear);
   while(iSpanDays >= tmp)
   {
      iSpanDays -= tmp;
      tmp = LunarYearDays(++iYear);
   }
   //计算月
   tmp = LOWORD(LunarMonthDays(iYear, iMonth));
   while(iSpanDays >= tmp)
   {
      iSpanDays -= tmp;
      if(iMonth == GetLeapMonth(iYear))
      {
         tmp  = HIWORD(LunarMonthDays(iYear, iMonth));
         if(iSpanDays < tmp)
            break;
         iSpanDays -= tmp;
      }
      tmp = LOWORD(LunarMonthDays(iYear, ++iMonth));
   }
   //计算日
   iDay += WORD(iSpanDays);
}
//===========================================================================//
WORD xDate::GetLunarDate(WORD iYear, WORD iMonth, WORD iDay,WORD &iLunarYear, WORD &iLunarMonth, WORD &iLunarDay)
{
   l_CalcLunarDate(iLunarYear, iLunarMonth, iLunarDay,CalcDateDiff(iYear, iMonth, iDay));
   return l_GetLunarHolDay(iYear, iMonth, iDay);
}
//===========================================================================//
//根据节气数据存储格式,计算阳历iYear年iMonth月iDay日对应的节气,
WORD xDate::l_GetLunarHolDay(WORD iYear, WORD iMonth, WORD iDay) 

{
   BYTE &flag = gLunarHolDay[(iYear - START_YEAR)*12+iMonth -1];
   WORD day;
   if(iDay <15)
      day= 15 - ((flag>>4)&0x0f);
   else
      day = ((flag)&0x0f)+15;
   if(iDay == day)
      return (iMonth-1) *2 + (iDay>15? 1: 0) +1;
   else
      return 0;
}
//===========================================================================//
void xDate::GetDate(WORD &iYear, WORD &iMonth, WORD &iDay)
{
   iYear  = m_iYear;
   iMonth = m_iMonth;
   iDay   = m_iDay;
}
//===========================================================================//
BOOL xDate::SetDate(WORD iYear, WORD iMonth, WORD iDay)
{
   if(iYear < START_YEAR || iYear > END_YEAR || iMonth <1 || iMonth >12)
      return FALSE;  

   if(iDay <1 || iDay > MonthDays(iYear, iMonth))
      return FALSE;  

   m_iYear   = iYear;
   m_iMonth  = iMonth;
   m_iDay    = iDay;  

   return TRUE;
}
//===========================================================================//
WORD xDate::WeekDay(WORD iYear, WORD iMonth, WORD iDay)
{
   //数组元素monthday[i]表示第i个月以前的总天数除以7的余数
   WORD monthday[]={0,3,3,6,1,4,6,2,5,0,3,5};
   WORD iDays = (iYear-1)%7 + (iYear-1)/4 - (iYear-1)/100 +(iYear-1)/400;
   iDays += (monthday[iMonth-1] +iDay) ;
   //如果iYear是闰年
   if(IsLeapYear(iYear) && iMonth>2)
      iDays++;
   //返回:0,1,2,3,4,5,6表日、一、二、三、四、五、六
   return iDays%7;
}
//===========================================================================//
WORD xDate::MonthDays(WORD iYear, WORD iMonth)
{
   switch(iMonth)
   {
   case 1: //一  (月)
   case 3: //三  (月)
   case 5: //五  (月)
   case 7: //七  (月)
   case 8: //八  (月)
   case 10://十  (月)
   case 12://十二(月)
      return 31;  

   case 4: //四  (月)
   case 6: //六  (月)
   case 9: //九  (月)
   case 11://十一(月)
      return 30;  

   case 2: //二  (月)
      //如果是闰年
      if(IsLeapYear(iYear))
         return 29;
      else
         return 28;  

   }
   return 0;
}
//===========================================================================//
WORD xDate::GetLeapMonth(WORD iLunarYear)
{
   BYTE &flag = gLunarMonth[(iLunarYear - START_YEAR)/2];
   return  (iLunarYear - START_YEAR)%2 ? flag&0x0f : flag>>4;
}
//===========================================================================//
LONG xDate::LunarMonthDays(WORD iLunarYear, WORD iLunarMonth)
{
   if(iLunarYear < START_YEAR)
      return 30L; 

   WORD height =0 ,low =29;
   int iBit = 16 - iLunarMonth; 

   if(iLunarMonth > GetLeapMonth(iLunarYear) && GetLeapMonth(iLunarYear))
      iBit --;  

   if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<<iBit))
      low ++; 

   if(iLunarMonth == GetLeapMonth(iLunarYear))
      if(gLunarMonthDay[iLunarYear - START_YEAR] & (1<< (iBit -1)))
         height =30;
      else
         height =29; 

      return MAKELONG(low, height);
}
//===========================================================================//
WORD xDate::LunarYearDays(WORD iLunarYear)
{
/*
   WORD days=348 ; //12*29
   int month = 12 ; 

   //如果iYear年有闰月,则为13个月
   if(gLanarMonth[iYear - START_YEAR])
      month ++;
   //如果某月是三十天则days++
   while(month >=0 && (gLanarMonthDay[iYear - START_YEAR] & (1 << (16 - month))))
   {
      days ++;
      month --;
   }
   return days;
*/
   WORD days =0;
   for(WORD i=1; i<=12; i++)
   {
      LONG tmp = LunarMonthDays(iLunarYear ,i);
      days += HIWORD(tmp);
      days += LOWORD(tmp);
   }
   return days;
}
//===========================================================================//
void xDate::FormatLunarYear(WORD iYear, char *pBuffer)
{
   char szText1[]="甲乙丙丁戊己庚辛壬癸";
   char szText2[]="子丑寅卯辰巳午未申酉戌亥";
   char szText3[]="鼠牛虎免龙蛇马羊猴鸡狗猪"; 

   memcpy(pBuffer  ,szText1+((iYear-4)%10)*2,2);
   memcpy(pBuffer+2,szText2+((iYear-4)%12)*2,2);
   pBuffer[4]=‘ ‘;
   memcpy(pBuffer+5,szText3+((iYear-4)%12)*2,2);
   strcpy(pBuffer+7,"年");
}
//===========================================================================//
void xDate::FormatMonth(WORD iMonth, char *pBuffer, BOOL bLunar) 

{
   if(!bLunar && iMonth==1)
   {
      strcpy(pBuffer, " 一月");
      return;
   }
   char szText[]="正二三四五六七八九十";
   if(iMonth<=10)
   {
      memcpy(pBuffer  ," ", 2);
      memcpy(pBuffer+2, szText + (iMonth -1)*2, 2);
      strcpy(pBuffer+4, "月");
      return;
   }
   if (iMonth == 11)
      strcpy(pBuffer, "十一");
   else
      strcpy(pBuffer, "十二");
   strcpy(pBuffer+4  , "月"); 

}
//===========================================================================//
void xDate::FormatLunarDay(WORD iDay, char *pBuffer)
{
   char szText1[]="初十廿三";
   char szText2[]="一二三四五六七八九十";
   if(iDay != 20 && iDay !=30)
   {
      memcpy(pBuffer  , szText1 + (iDay-1)/10*2   ,2);
      memcpy(pBuffer+2, szText2 + ((iDay-1)%10)*2 ,2);
      pBuffer[4]=‘/0‘;
   }
   else
   {
      memcpy(pBuffer  , szText1 + iDay/10*2, 2);
      strcpy(pBuffer+2, szText2 +18);
   }
} 

/******************************************************************************
下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法.
*******************************************************************************/
//数组gLunarDay存入阴历1901年到2100年每年中的月天数信息,
//阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天
WORD gLunarMonthDay[]=
{
   //测试数据只有1901.1.1 --2050.12.31
   0X4ae0, 0Xa570, 0X5268, 0Xd260, 0Xd950, 0X6aa8, 0X56a0, 0X9ad0, 0X4ae8, 0X4ae0,   //1910
   0Xa4d8, 0Xa4d0, 0Xd250, 0Xd548, 0Xb550, 0X56a0, 0X96d0, 0X95b0, 0X49b8, 0X49b0,   //1920
   0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada8, 0X2b60, 0X9570, 0X4978, 0X4970, 0X64b0,   //1930
   0Xd4a0, 0Xea50, 0X6d48, 0X5ad0, 0X2b60, 0X9370, 0X92e0, 0Xc968, 0Xc950, 0Xd4a0,   //1940
   0Xda50, 0Xb550, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950, 0Xb4a8, 0X6ca0,   //1950
   0Xb550, 0X55a8, 0X4da0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa950, 0Xe950, 0X6aa0, 0Xad50,   //1960
   0Xab50, 0X4b60, 0Xa570, 0Xa570, 0X5260, 0Xe930, 0Xd950, 0X5aa8, 0X56a0, 0X96d0,   //1970
   0X4ae8, 0X4ad0, 0Xa4d0, 0Xd268, 0Xd250, 0Xd528, 0Xb540, 0Xb6a0, 0X96d0, 0X95b0,   //1980
   0X49b0, 0Xa4b8, 0Xa4b0, 0Xb258, 0X6a50, 0X6d40, 0Xada0, 0Xab60, 0X9370, 0X4978,   //1990
   0X4970, 0X64b0, 0X6a50, 0Xea50, 0X6b28, 0X5ac0, 0Xab60, 0X9368, 0X92e0, 0Xc960,   //2000
   0Xd4a8, 0Xd4a0, 0Xda50, 0X5aa8, 0X56a0, 0Xaad8, 0X25d0, 0X92d0, 0Xc958, 0Xa950,   //2010
   0Xb4a0, 0Xb550, 0Xb550, 0X55a8, 0X4ba0, 0Xa5b0, 0X52b8, 0X52b0, 0Xa930, 0X74a8,   //2020
   0X6aa0, 0Xad50, 0X4da8, 0X4b60, 0X9570, 0Xa4e0, 0Xd260, 0Xe930, 0Xd530, 0X5aa0,   //2030
   0X6b50, 0X96d0, 0X4ae8, 0X4ad0, 0Xa4d0, 0Xd258, 0Xd250, 0Xd520, 0Xdaa0, 0Xb5a0,   //2040
   0X56d0, 0X4ad8, 0X49b0, 0Xa4b8, 0Xa4b0, 0Xaa50, 0Xb528, 0X6d20, 0Xada0, 0X55b0,   //2050  

};  

//数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年
BYTE  gLunarMonth[]=
{
   0X00, 0X50, 0X04, 0X00, 0X20,   //1910
   0X60, 0X05, 0X00, 0X20, 0X70,   //1920
   0X05, 0X00, 0X40, 0X02, 0X06,   //1930
   0X00, 0X50, 0X03, 0X07, 0X00,   //1940
   0X60, 0X04, 0X00, 0X20, 0X70,   //1950
   0X05, 0X00, 0X30, 0X80, 0X06,   //1960
   0X00, 0X40, 0X03, 0X07, 0X00,   //1970
   0X50, 0X04, 0X08, 0X00, 0X60,   //1980
   0X04, 0X0a, 0X00, 0X60, 0X05,   //1990
   0X00, 0X30, 0X80, 0X05, 0X00,   //2000
   0X40, 0X02, 0X07, 0X00, 0X50,   //2010
   0X04, 0X09, 0X00, 0X60, 0X04,   //2020
   0X00, 0X20, 0X60, 0X05, 0X00,   //2030
   0X30, 0Xb0, 0X06, 0X00, 0X50,   //2040
   0X02, 0X07, 0X00, 0X50, 0X03    //2050
};  

//数组gLanarHoliDay存放每年的二十四节气对应的阳历日期
//每年的二十四节气对应的阳历日期几乎固定,平均分布于十二个月中
//   1月          2月         3月         4月         5月         6月
//小寒 大寒   立春  雨水   惊蛰 春分   清明 谷雨   立夏 小满   芒种 夏至
//   7月          8月         9月         10月       11月        12月
//小暑 大暑   立秋  处暑   白露 秋分   寒露 霜降   立冬 小雪   大雪 冬至
/*********************************************************************************
节气无任何确定规律,所以只好存表,要节省空间,所以....
下面这种存法实在是太变态了,你就将就着看吧
**********************************************************************************/
//数据格式说明:
//如1901年的节气为
//  1月     2月     3月   4月    5月   6月   7月    8月   9月    10月  11月     12月
// 6, 21, 4, 19,  6, 21, 5, 21, 6,22, 6,22, 8, 23, 8, 24, 8, 24, 8, 24 , 8, 23, 8, 22
// 9, 6,  11,4,   9, 6,  10,6,  9,7,  9,7,  7, 8,  7, 9,  7,  9, 7,  9, 7,  8, 7, 15
//上面第一行数据为每月节气对应日期,15减去每月第一个节气,每月第二个节气减去15得第二行
// 这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节气数据,低位存放
//第二个节气的数据,可得下表  

BYTE gLunarHolDay[]=
{
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1901
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1902
      0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1903
      0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //1904
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1905
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1906
      0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1907
      0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1908
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1909
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1910
      0X96, 0XA5, 0X87, 0X96, 0X87, 0X87, 0X79, 0X69, 0X69, 0X69, 0X78, 0X78,   //1911
      0X86, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1912
      0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1913
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1914
      0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1915
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1916
      0X95, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1917
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X77,   //1918
      0X96, 0XA5, 0X97, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1919
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1920
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1921
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X77,   //1922
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X69, 0X69, 0X78, 0X78,   //1923
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1924
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X87,   //1925
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1926
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1927
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1928
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1929
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1930
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X87, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1931
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1932
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1933
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1934
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1935
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1936
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1937
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1938
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1939
      0X96, 0XA5, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1940
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1941
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1942
      0X96, 0XA4, 0X96, 0X96, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1943
      0X96, 0XA5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1944
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1945
      0X95, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1946
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1947
      0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1948
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X79, 0X77, 0X87,   //1949
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1950
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X79, 0X79, 0X79, 0X69, 0X78, 0X78,   //1951
      0X96, 0XA5, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1952
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1953
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X68, 0X78, 0X87,   //1954
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1955
      0X96, 0XA5, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1956
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1957
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1958
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1959
      0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1960
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1961
      0X96, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1962
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1963
      0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1964
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1965
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1966
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1967
      0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1968
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1969
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1970
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X79, 0X69, 0X78, 0X77,   //1971
      0X96, 0XA4, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1972
      0XA5, 0XB5, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1973
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1974
      0X96, 0XB4, 0X96, 0XA6, 0X97, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1975
      0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X89, 0X88, 0X78, 0X87, 0X87,   //1976
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1977
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //1978
      0X96, 0XB4, 0X96, 0XA6, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1979
      0X96, 0XA4, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1980
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X77, 0X87,   //1981
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1982
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X78, 0X79, 0X78, 0X69, 0X78, 0X77,   //1983
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //1984
      0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //1985
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1986
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X79, 0X78, 0X69, 0X78, 0X87,   //1987
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1988
      0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1989
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //1990
      0X95, 0XB4, 0X96, 0XA5, 0X86, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1991
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1992
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1993
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1994
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X76, 0X78, 0X69, 0X78, 0X87,   //1995
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //1996
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //1997
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //1998
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //1999
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2000
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2001
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2002
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //2003
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2004
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2005
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2006
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X69, 0X78, 0X87,   //2007
      0X96, 0XB4, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2008
      0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2009
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2010
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X78, 0X87,   //2011
      0X96, 0XB4, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2012
      0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2013
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2014
      0X95, 0XB4, 0X96, 0XA5, 0X96, 0X97, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2015
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2016
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2017
      0XA5, 0XB4, 0XA6, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2018
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2019
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X86,   //2020
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2021
      0XA5, 0XB4, 0XA5, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2022
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X79, 0X77, 0X87,   //2023
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2024
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2025
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2026
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2027
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2028
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2029
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2030
      0XA5, 0XB4, 0X96, 0XA5, 0X96, 0X96, 0X88, 0X78, 0X78, 0X78, 0X87, 0X87,   //2031
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2032
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X86,   //2033
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X78, 0X88, 0X78, 0X87, 0X87,   //2034
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2035
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2036
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X86,   //2037
      0XA5, 0XB3, 0XA5, 0XA5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2038
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2039
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X96,   //2040
      0XA5, 0XC3, 0XA5, 0XB5, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2041
      0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X88, 0X88, 0X88, 0X78, 0X87, 0X87,   //2042
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2043
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X88, 0X87, 0X96,   //2044
      0XA5, 0XC3, 0XA5, 0XB4, 0XA5, 0XA6, 0X87, 0X88, 0X87, 0X78, 0X87, 0X86,   //2045
      0XA5, 0XB3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X88, 0X78, 0X87, 0X87,   //2046
      0XA5, 0XB4, 0X96, 0XA5, 0XA6, 0X96, 0X88, 0X88, 0X78, 0X78, 0X87, 0X87,   //2047
      0X95, 0XB4, 0XA5, 0XB4, 0XA5, 0XA5, 0X97, 0X87, 0X87, 0X88, 0X86, 0X96,   //2048
      0XA4, 0XC3, 0XA5, 0XA5, 0XA5, 0XA6, 0X97, 0X87, 0X87, 0X78, 0X87, 0X86,   //2049
      0XA5, 0XC3, 0XA5, 0XB5, 0XA6, 0XA6, 0X87, 0X88, 0X78, 0X78, 0X87, 0X87    //2050  

};

原文地址:https://www.cnblogs.com/15157737693zsp/p/9749343.html

时间: 2024-10-24 22:39:19

一个比较全的C++农历算法(转)的相关文章

史上最全的随机数生成java算法

原文:史上最全的随机数生成java算法 源代码下载地址:http://www.zuidaima.com/share/1585762703215616.htm 前段时间有其他牛人分享的随机数激起了我分享随机数的想法 java随机字符补充版 [maven+junit] java生成指定为位数的随机密码 我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法: 1 String password = RandomUtil.generateString(10); 源码如下: pack

图像全参考客观评价算法比较

Lin Zhang等人在论文<A COMPREHENSIVEEVALUATION OF FULL REFERENCE IMAGE QUALITY ASSESSMENT ALGORITHMS>中,比较了几种全参考图像质量评价算法,在此记录一下他们的结果. 下表所示是他们所用的图像库,包含了:TID2008database,CSIQ database,LIVEdatabase,IVCdatabase,Toyama-MICTdatabase,Cornell A57 database,以及 Wirel

如何写一个简单的手写识别算法?

gesture recognizer 是比较好的解法. 洒家也有一个类似的算法,借鉴了原始手写ocr的思路来实现的.其实是写在 $1 gesture recognizer 之前的,但没有 $1 gesture recognizer 归纳得好,作者jacob还是我偶像. Realtime Gesture recognition 把所有的笔画定义了个8个方向,然后将B的笔画可以分解成一个字符串.然后当人在触摸屏上画出一个符号时,也将它分解成8个方向的字符串,最后比较两个字符串的距离就能判断出和不同符

[笔记]讨论农历算法的几篇文档

1. 农历算法, http://gobismoon.blog.163.com/blog/static/524428022011916115259390/ 比较简洁,直接给出了计算公式和数据表,不想了解原理的话,基本可以直接用来编程. 2. 农历算法, http://www.cnblogs.com/linkr/articles/2306005.html 比较详细,解释了农历的推算原理和相关概念,也包含计算公式和数据表. 3. 中国农历算法,http://www.truevue.org/china/

《从零开始做一个MEAN全栈项目》(1)

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发?     对于初学者来说,学习一门新的语言和技术的体验总是让人愉快的,也会满足于掌握了一些新的东西并且解决了一些实际问题.在一个小组中采用全栈开发时,你可以更加有效地把握项目全局概念,这也有利于让你了解项目中的不同模块以及它们之间是如何协同工作的.你会对你们的产品中他人的贡献更加清晰,你也就了解了这款产品如何

这是一个真正靠谱的寻路算法

绝对没有其他看起来高大上 给别人讲都将不明白的理论.管你 人工智能 啥的 ,还有一百度一大篇的a*算法 ,其实大部分文章的理论都是讲不通的 或者没有讲清楚 更别说代码.做事刨根问底的牛脾气又上来了. 两周前 偶然原因接触到了寻路算法 于是百度 找到了a* .讲来将去大概意思就是持续性的找离目标近的节点 并且走过的节点不能重复走.反正百度搜a*算法 一搜一大片.在很简单的障碍的情况下是没问题 : 但是拐个弯就不行了,不是找最近的么,我让你一直找最近的. 直接迂在里面出不来了: 期间我曾经想过为什么

问一个AlertDialog全屏问题?

============问题描述============ xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="matc

《从零开始做一个MEAN全栈项目》(2)

欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技术架构,(2)为什么我们要打造单页应用,(3)本系列项目的技术架构和开发计划.希望通过这三个问题,我们能够对本项目产生一个全局视角. 实现一个常见的MEAN全栈项目的核心就是RESTful API.这个接口通常是用MongoDB, Express, Node.js实现的,而单页应用(SPA)由AngularJ

Raft 为什么是更易理解的分布式一致性算法——(1)Leader在时,由Leader向Follower同步日志 (2)Leader挂掉了,选一个新Leader,Leader选举算法。

转自:http://www.cnblogs.com/mindwind/p/5231986.html Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然发散的比较多,相对冗长.读完后掩卷沉思觉得还是整理一下才会更牢靠,变成真正属于自己的.这里我就借助前面黑白棋落子里第一种极简思维来描述和概念验证下 Raft 协议的工作方式. 在一个由 Raft 协议组织的集群中有三类角色: Leader(领袖) Follower(群众) Candidate(候选人