| ||||||||||
| 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 | |||||||||
WA了50次终于过了啊! 把一个边界条件写到了后面一点的位置,网上所有的数据全部过了还是WA,郁闷了一天啊,最后绝望的试着把if(sum<0) return(false)写在前面了一点就过了,那个激动啊!感谢网上大牛们的数据。特此贴代码庆祝我逃离苦海,0ms的感觉好啊, 没有加%30也过了。
#include <cstdlib>
#include <iostream>
using namespace std;
int a[3001][7],n;
void input()
{ int i,j;
for(i=1;i<=1001;i++)
{ for(j=1;j<=6;j++) cin>>a[i][j];
if(a[i][1]==0&&a[i][2]==0&&a[i][3]==0&&a[i][4]==0&&a[i][5]==0&&a[i][6]==0) break;
for(j=1;j<=6;j++) a[i][j]=a[i][j]%30;
}
if(i==1) n=1;
else
n=i;
}
bool exist(int j,int sum,int i)
{ int k,l;
if(sum==0) return(true);
if(sum<0) return(false);
else{ if(j==6)
{ if(a[i][j]!=0&&sum%6==0&&sum/6<=a[i][j]) return(true);
else return(false);
}
else {
for(l=j+1;l<=6;l++) if(a[i][l]!=0) break;
if(l>6)
{ if(sum%j==0&&sum/j<=a[i][j]) return(true);
else return(false);
}
else for(k=0;k<=a[i][j];k++) if(exist(l,sum-k*j,i)) return(true);
}
return(false);
}
}
int main(int argc, char *argv[])
{ int i,sum,j,k,l;
input();
if(n==1) cout<<"Collection #"<<n<<":"<<endl<<"Can't be divided."<<endl<<endl;
else{
n--;
for(i=1;i<=n;i++)
{ sum=0;
for(j=1;j<=6;j++) sum+=a[i][j]*j;
if(sum%2==1)
{ cout<<"Collection #"<<i<<":"<<endl<<"Can't be divided."<<endl<<endl;
continue;
}
else { sum=sum/2;
for(j=1;j<=6;j++) if(a[i][j]!=0) break;
if(exist(j,sum,i))
cout<<"Collection #"<<i<<":"<<endl<<"Can be divided."<<endl;
else
cout<<"Collection #"<<i<<":"<<endl<<"Can't be divided."<<endl;
}
cout<<endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator