| ||||||||||
| 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 | |||||||||
plz anybody , try to execute this code and enter any test case and tell me where is the trick? why WA?#include<iostream>
using namespace std;
void gene(int p[],int t[],int n,int index,int max,int st[]);
void replace(int p[],int max,int index,int t[]);
void print();
int s[260],ss[260],noof,op[100],onoof,tie,omax,oindex,n,ot[260],*xx;
int main()
{
int m;
while(cin>>ss[0])
{
m=1;
if(ss[0]!=0)
{
for(;cin>>ss[m]&&ss[m]!=0;m++)
{}
}
xx=new int[m];
for(int i=0;i<m;i++)xx[i]=i;
for(int i=0;i<=m;i++)s[i]=ss[i];
for(int i=0;i<m-1;i++)
{
for(int j=0;j<m-1;j++)
{
if(s[j]>s[j+1])
{
xx[j]=xx[j]+xx[j+1];
xx[j+1]=xx[j]-xx[j+1];
xx[j]=xx[j]-xx[j+1];
s[j]=s[j]+s[j+1];
s[j+1]=s[j]-s[j+1];
s[j]=s[j]-s[j+1];
}
}
}
for(;cin>>n&&n!=0;)
{
int *p=new int[100],*t=new int[100],index=0;
int st[10000]={0},max=0;
for(int i=0;i<100;i++){p[i]=0;t[i]=0;op[i]=0;ot[i]=0;}
onoof=0;
tie=0;
noof=0;
omax=0;
oindex=0;
gene(p,t,n,index,max,st);
print();
}
}
return 0;
}
void gene(int p[],int t[],int n,int index,int max,int st[])
{
if(n==0)
{
/* for(int j=0;p[j]!=0;j++)cout<<p[j]<<" ";cout<<endl;
for(int j=0;t[j]!=0;j++)cout<<t[j]<<" ";cout<<endl;
*/
// process //
if(noof>onoof)
{
replace(p,max,index,t);
}
else
{
if(noof==onoof)
{
if(index<oindex)
{
replace(p,max,index,t);
}
else
{
if(index==oindex)
{
if(max>omax)
{
replace(p,max,index,t);
}
else
{
if(max==omax)
{
tie++;
}
}
}
}
}
}
return;
}
if(index<4)
{
for(int i=0;s[i]!=0&&s[i]<=n;i++)
{
if(index==0||(p[index-1]<=s[i]&&t[index-1]<=i+1))
{
if(st[i]==0)noof++;
st[i]++;
p[index]=s[i];
t[index]=i+1;
gene(p,t,n-s[i],index+1,max,st);
p[index]=0;
t[index]=0;
st[i]--;
if(st[i]==0)noof--;
}
}
}
}
void replace(int p[],int max,int index,int t[])
{
// cout<<"INDEX = "<<index<<endl;
tie=0;
for(int i=0;i<index;i++)
{
op[i]=p[i];
ot[i]=t[i];
}
omax=max;
oindex=index;
onoof=noof;
// cout<<"INDEX = "<<index<<endl;
}
void print()
{
cout<<n<<" ";
if(tie==0)
{
if(onoof==0)
{
cout<<"---- none"<<endl;
}
else
{
cout<<"("<<onoof<<"): ";
for(int j=0;j<oindex-1;j++)
{
for(int k=0;k<oindex-1;k++)
{
if(xx[ot[k]-1]>xx[ot[k+1]-1])
{
int temp=ot[k];
ot[k]=ot[k+1];
ot[k+1]=temp;
temp=op[k];
op[k]=op[k+1];
op[k+1]=temp;
}
}
}
for(int j=0;j<oindex;j++)
{
cout<<op[j]<<" ";
}
cout<<endl;
}
}
else
{
cout<<"("<<tie+1<<"): tie"<<endl;
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator