| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:哪位能帮我看看为什么错了In Reply To:哪位能帮我看看为什么错了 Posted by:wanglei at 2004-04-01 13:31:35 > #include <iostream.h>
> #include <string.h>
> const int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
> int nexty,nextm,nextd;
> int leap(int year)
> {
> if ((year%4==0 && year%100!=0) || year%400==0) return 1;
> return 0;
> }
> int nextday(int year,int month,int day)
> {
> nexty=year;
> nextm=month;
> nextd=day+1;
> if (leap(year)){
> if (month==2 && nextd>29){
> nextd=1;
> nextm++;
> }
> }
> else if (day>m[month]){----------------->这里也错了day->nextd
> nextd=1;
> nextm++;
> }
> if (nextm>12){
> nextm=1;
> nexty++;
> }
> return 0;
> }
> int exist(int year,int month,int day)
> {
> if (year>101 || month>12) return 0;
> if (year==101 && (month>11 || day>4)) return 0;
> if (month==2 && leap(year)){
> if (day>29) return 0;
> }
> else if (day>m[month]) return 0;
> return 1;
> }
> int main()
> {
> char f[105][15][35];
> int i,j,k,test;
> int year,month,day;
> char flag1,flag2;
> memset(f,'0',sizeof(f));
> f[101][11][3]='1';
> for(i=101;i>=0;i--)
> for(j=12;j>=1;j--)
> for(k=31;k>=1;k--){
> if (!exist(i,j,k)) continue;
> flag1='1';
> flag2='1';
> if (j==12) flag1=f[i+1][1][k];
> else if (exist(i,j+1,k)) flag1=f[i][j+1][k];
> nextday(i,j,k);
> if (exist(nexty,nextm,nextd)) flag2=f[nexty][nextm][nextd];
> if (flag1=='0' || flag2=='0') f[i][j][k]='1';
> }
> cin>>test;
> while(test--){
> cin>>year>>month>>day;
> if (f[year-1900][month][day]=='1') cout<<"YES"<<endl;
> else cout<<"NO"<<endl;
> }
>
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator