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啊 什么情况啊 。。。 求大牛解答。。(PS:新手一个AND代码有点长)#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f #define NF -0x3f3f3f3f int ans; int x[11]; int a1[11]; int ak[11]; int b1[11]; int k,a,b,e,h,z,mine; int po(int n){ if(n==0) return 1; int y,p; p=1; for(y=0;y<n;y++){ p=10*p; } return p; } int max(int n){ int i,r,j; r=NF; for(i=0;i<n;i++){ if(x[i]>r&&ak[i]!=-1) r=x[i]; } for(j=0;j<n;j++){ if(x[j]==r){ ak[j]=-1; break; } } return r; } int min(int n){ int i,r,j; r=INF; for(i=0;i<n;i++){ if(x[i]<r&&ak[i]!=-1) r=x[i]; } for(j=0;j<n;j++){ if(x[j]==r){ ak[j]=-1; break; } } return r; } int solution1(int h){ int w,c,v,s,ans1; v=h/2; for(w=0;w<h;w++){ memset(ak, 0, sizeof(ak)); memset(a1, 0, sizeof(a1)); memset(b1, 0, sizeof(b1)); c=v-1; if(z==0){ if(x[w+1]==0||x[w+2]==0) continue; a1[0]=x[w+1]; ak[w+1]=-1; b1[0]=x[w+2]; ak[w+2]=-1; a=a1[0]*po(c); b=b1[0]*po(c); for(s=1;s<v;s++){ a1[s]=max(h); c--; a+=a1[s]*po(c); } c=v-1; for(s=1;s<v;s++){ b1[s]=min(h); c--; b+=b1[s]*po(c); } } else if(z==1){ if(x[w]==0||x[w+1]==0) continue; a1[0]=x[w]; ak[w]=-1; b1[0]=x[w+1]; ak[w+1]=-1; a=a1[0]*po(c); b=b1[0]*po(c); for(s=1;s<v;s++){ a1[s]=max(h); c--; a+=a1[s]*po(c); } c=v-1; for(s=1;s<v;s++){ b1[s]=min(h); c--; b+=b1[s]*po(c); } } if((a-b)>0) ans1=a-b; else ans1=b-a; if(ans1<mine) mine=ans1; } return mine; } int solution2(int h){ int c,v,s,ans1; v=(h/2)+1; memset(ak, 0, sizeof(ak)); memset(a1, 0, sizeof(a1)); memset(b1, 0, sizeof(b1)); c=v-1; if(z==0){ a1[0]=x[1]; ak[1]=-1; b1[0]=x[h-1]; ak[h-1]=-1; a=a1[0]*po(c); b=b1[0]*po(c-1); for(s=1;s<v;s++){ a1[s]=min(h); c--; a+=a1[s]*po(c); } c=v-1; for(s=1;s<(h-v);s++){ b1[s]=max(h); c--; b+=b1[s]*po(c-1); } } else if(z==1){ a1[0]=x[0]; ak[0]=-1; b1[0]=x[h-1]; ak[h-1]=-1; a=a1[0]*po(c); b=b1[0]*po(c-1); for(s=1;s<v;s++){ a1[s]=min(h); c--; a+=a1[s]*po(c); } c=v-1; for(s=1;s<(h-v);s++){ b1[s]=max(h); c--; b+=b1[s]*po(c-1); } } mine=a-b; return mine; } int main(){ scanf("%d\n",&k); int q; for(e=0;e<k;e++){ memset(x, 0, sizeof(x)); mine=INF; a=0; b=0; h=0; ans=0; char ch; while((ch=getchar())!='\n') { if(ch==' ') continue; x[h++]=ch-'0'; } if(h==1){ printf("%d\n",x[0]); continue; } sort(x,x+h); if(x[0]==0){ z=0; } else if(x[0]!=0){ z=1; } if(h%2==0){ ans=solution1(h); } else if(h%2==1){ ans=solution2(h); } printf("%d\n",ans); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator