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了N次,把代码贴出来吧import java.util.*; public class Main { static int stamps[]=new int[100]; static int refer[]=new int[100],t_refer[]=new int[100]; static int stampnum; static int maxdef,minnum,maxnum; static int nowdef,nowminnum,nowmaxnum; static boolean tie; static void deal(int s,int rn,int r)//回溯 { if(r==0) { if(nowdef>maxdef||(nowdef==maxdef&&nowminnum<minnum)||(nowdef==maxdef&&nowminnum==minnum&&nowmaxnum>maxnum)) { tie=false; maxdef=nowdef; minnum=nowminnum; maxnum=nowmaxnum; for(int i=1;i<=stampnum;i++) refer[i]=t_refer[i]; } else if (nowdef==maxdef&&nowminnum==minnum&&nowmaxnum==maxnum) tie=true; else return; } else if(rn<1||r<1||s>stampnum) return; else if(nowdef+rn<maxdef) return;//剪枝1 else if(r-stamps[s]<0) return;//剪枝2 else { //----------case1&&cacse2----------- int t_mn=nowmaxnum; boolean flag=true; for(int i=s+1;i<=stampnum;i++) if(t_refer[i]>0) flag=false; if(flag) nowmaxnum=stamps[s]; nowminnum++; t_refer[s]++; //--------------------------------- nowdef++; deal(s+1,rn-1,r-stamps[s]); nowdef--; deal(s,rn-1,r-stamps[s]); //--------------------------------- t_refer[s]--; nowmaxnum=t_mn; nowminnum--; //-------end---------------------- deal(s+1,rn,r); } } public static void main(String arg[]) { Scanner in=new Scanner(System.in); while(in.hasNextInt()) { stampnum=0; while(true) { int temp=in.nextInt(); if(temp==0) break; else { stamps[++stampnum]=temp; } } Arrays.sort(stamps,1,stampnum+1); while(true) { int temp=in.nextInt(); if(temp==0) break; else { Arrays.fill(t_refer, 0); tie=false; maxdef=nowdef=maxnum=nowmaxnum=nowminnum=0; minnum=999; if(stamps[stampnum]*4>=temp) deal(1,4,temp); if(maxdef!=0) { if(tie) System.out.println(temp+" ("+maxdef+"): tie"); else { System.out.print(temp+" ("+maxdef+"):"); for(int i=1;i<=stampnum;i++) for(int j=1;j<=refer[i];j++) System.out.print(" "+stamps[i]); System.out.println(); } } else System.out.println(temp+" ---- none"); } } } } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator