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 <cstdio> using namespace std; int value[500],N,res,rescount,stamps[4000],beststamps[4000],bestused; int ssort(){int t;//莫非是排序惹的祸? for (int i=0;i<N;i++)for (int j=i;j<N;j++){ if (value[i]>value[j]){ t=value[i];value[i]=value[j];value[j]=t; } } return 0; } void dfs(int id,int used,int v,int last){int i,j,k; if (v<0 || used>4)return; if (v==0){ if (res==id && bestused==used) { for (i=0;i<bestused && stamps[i]==beststamps[i];i++); if (i!=bestused)rescount++; } if (res<id || (bestused>used && res==id)){ res=id;bestused=used;rescount=1; for (i=0;i<used;i++)beststamps[i]=stamps[i]; } return; } for (i=last+1;i<N;i++){ for (j=1;j<=4;j++) if (v>=value[i]*j && used+j<=4){ for (k=0;k<j;k++)stamps[used+k]=i; dfs(id+1,used+j,v-value[i]*j,i); } } } int main(){ int i,j; while (scanf("%d",&i)!=-1){ value[0]=i;N=1; for (scanf("%d",&i);i;scanf("%d",&i)) value[N++]=i; ssort(); for (scanf("%d",&i);i;scanf("%d",&i)){ res=-1;rescount=0;bestused=0; dfs(0,0,i,-1); if (rescount==0)printf("%d ---- none\n",i); else{ if (rescount>1)printf("%d (%d): tie\n",i,res); else{ printf("%d (%d):",i,res); for (j=0;j<bestused;j++)printf(" %d",value[beststamps[j]]); printf("\n"); } } } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator