PKU ACM-1029题 java False coin

    技术2022-05-20  44

    在DISCUSS里的测试数据都通过了,可是还是WA,这让我很不解,先放在这里吧,下次通过来在来改下。

    代码围绕3点展开 1.等号两边的都不可能是假  2.不等号两边的币之外的所有币都是真的  3.在同一种不等号两边都出现过的都是真的  import java.util.Scanner; public class Main{ public static void main(String[] args)throws Exception{ Scanner cin=new Scanner(System.in); int ToT=2,ToTnum=0,result=0; int k=0; int coinNum=cin.nextInt(); int[] id=new int[coinNum]; String[] idString=new String[coinNum]; for(int i=0;i<id.length;i++){ id[i]=0; idString[i]="null"; } int weightings=cin.nextInt(); cin.nextLine(); while(cin.hasNext()){ k=k+1; String pan=cin.nextLine(); String[] coin=pan.split(" "); int nOPan=Integer.valueOf(coin[0]); String c=cin.next(); if(c.equals("=")){ for(int i=0;i<2*nOPan;i++){ id[(int)coin[i+1].charAt(0)-49]=1; } } if(c.equals("<") || c.equals(">")){ ToT=ToT+1; for(int i=0;i<2*nOPan;i++){ if(id[(int)coin[i+1].charAt(0)-49]!=1){ String temp=c.equals("<")? "heavy" : "light"; String temp2=c.equals("<")? "light" : "heavy"; id[(int)coin[i+1].charAt(0)-49]=ToT; if(i<nOPan){ if(idString[(int)coin[i+1].charAt(0)-49]==temp2) id[(int)coin[i+1].charAt(0)-49]=1; else idString[(int)coin[i+1].charAt(0)-49]=temp; } else{ if(idString[(int)coin[i+1].charAt(0)-49]==temp) id[(int)coin[i+1].charAt(0)-49]=1; else idString[(int)coin[i+1].charAt(0)-49]=temp2; } } } for(int i=0;i<id.length;i++){ if(id[i]!=ToT)id[i]=1; } } cin.nextLine(); if(k==weightings)break; } for(int i=0;i<id.length;i++){ if(id[i]==ToT || id[i]==0){ ToTnum=ToTnum+1; result=i+1; } } System.out.println(ToTnum==1 ? result : 0); } }

     


    最新回复(0)