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#include<iostream> #include<math.h> using namespace std; const int nnm=202; const int mmm=22; int a[nnm][2],b[nnm][mmm],p[nnm][mmm],h[nnm][mmm];//b保存路径,p保存最优值,h保存D(J) + P(J) //p[n][m]表示前n人选m个代表的最优的D(J) - P(J)值 void show(int n,int m) { if(n<1||m<1)return; if(b[n][m]) { show(n-1,m-1); cout<<" "<<n; } else show(n-1,m); } void main() { int s,r,i,n,m,nn,mm,k=0; while(cin>>nn>>mm&&(mm||nn)) { k++; for(i=1;i<=nn;i++) { cin>>s>>r; a[i][0]=s-r; a[i][1]=s+r; } for(m=1;m<=mm;m++) for(n=m;n<=nn;n++) { if(m==n) { if(m==1) { p[n][m]=a[1][0]; h[n][m]=a[1][1]; } else { p[n][m]=a[n][0]+p[n-1][m-1]; h[n][m]=a[n][1]+h[n-1][m-1]; } b[n][m]=1; } else if(m==1) { if(abs(p[n-1][m])<abs(a[n][0])||(abs(p[n-1][m])==abs(a[n][0])&&h[n-1][m]>a[n][1])) { p[n][m]=p[n-1][m]; h[n][m]=h[n-1][m]; b[n][m]=0; } else { p[n][m]=a[n][0]; h[n][m]=a[n][1]; b[n][m]=1; } } else { i=abs(p[n-1][m-1]+a[n][0]); if(abs(p[n-1][m])<i||(abs(p[n-1][m])==i&&h[n-1][m]>h[n-1][m-1]+a[n][1])) { p[n][m]=p[n-1][m]; h[n][m]=h[n-1][m]; b[n][m]=0; } else { p[n][m]=p[n-1][m-1]+a[n][0]; h[n][m]=h[n-1][m-1]+a[n][1]; b[n][m]=1; } } } cout<<"Jury #"<<k<<endl; cout<<"Best jury has value "<<(p[nn][mm]+h[nn][mm])/2<<" for prosecution and value "<<(-p[nn][mm]+h[nn][mm])/2<<" for defence:\n"; show(nn,mm); cout<<"\n\n"; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator