0

下面的程序應顯示元素用'|'分隔的子集。這裏我使用靜態字符串數組分配。但它不顯示數組大小> 19的輸出。它沒有拋出異常。如何解決這個問題?使用字符串數組的子集程序沒有輸出

class kkk 
{ 
     static int set[]={3,4,9,14,15,19,28,37,47,50,54,56,59,61,70,73,78,81,92,95,97,99}; 
     static int arr_size=(int)Math.pow((double)2,(double)set.length); 
     static String []abc=new String[arr_size+10]; 
     static String wwf=""; 
     static void subset(int x) 
     { 
      if(abc[0].equals("END")) 
      { 
       abc[0]=""+x; 
      } 
      else 
      { 
       int i,len=0,count=0; 
       for(i=0;i<abc.length;i++) 
       { 
        if(!abc[i].equals("END")){len=len+1;} 
       } 
       count=len; 
       wwf=""; 
       for(i=0;i<len;i++) 
       { 
        wwf=abc[i]; 
        wwf=wwf+"|"+x; 
        abc[count]=wwf; 
        count++; 
       } 
       abc[count]=""+x; 
      } 
     } 
     static void sub() 
     { 
      int len=set.length,i; 
      for(i=0;i<len;i++) 
      { 
       subset(set[i]); 
      } 
      int count=0; 
      for(i=0;i<abc.length;i++) 
      { 
       System.out.println("count:"+count+++"-----"+abc[i]); 
      } 
     } 
     public static void main(String args[]) 
     { 
      for(int i=0;i<abc.length;i++) 
      { 
       abc[i]="END"; 
      } 
      sub(); 
     } 
    } 

對於ivanovic:以下程序的輸出是什麼?

class kkk 
    { 
     static int valid_subset() 
     { 
      int count=0,len=abc.length,subset_count=0; 
      for(int i=0;i<len;i++) 
      { 
       if(!abc[i].equals("END")) 
       { 
        count=count+1; 
       } 
      } 
      String www=""; 
      for(int i=0;i<count;i++) 
      { 
       int temp_large=0,sum=0,x=0; 

       www=abc[i]; 
       String fgr=""; 
       for(int j=0;j<www.length();j++) 
       { 
        if(!(""+www.charAt(j)).equals("|")) 
        { 
         fgr=fgr+www.charAt(j); 
         x=Integer.parseInt(fgr); 
        } 
        else 
        { 
         if(x>temp_large) 
         { 
          temp_large=x; 
         } 
         fgr=""; 
        } 
       } 
       if(x>temp_large) 
       { 
        temp_large=x; 
       } 
       fgr=""; 
       for(int j=0;j<www.length();j++) 
       { 
        if(!(""+www.charAt(j)).equals("|")) 
        { 
         fgr=fgr+www.charAt(j); 
         x=Integer.parseInt(fgr); 
        } 
        else 
        { 
         if(x!=temp_large) 
         { 
          sum=sum+x; 
         } 
         fgr=""; 
        } 
       } 
       if(x!=temp_large) 
       { 
        sum=sum+x; 
       } 
       if(temp_large==sum) 
       { 
        subset_count=subset_count+1; 
       } 
      } 
      return subset_count; 
     } 
     static int set[]={3,4,9,14,15,19,28,37,47,50,54,56,59,61,70,73,78,81,92,95,97,99}; 
     static int arr_size=(int)Math.pow((double)2,(double)set.length); 
     static String []abc=new String[arr_size+10]; 
     static String wwf=""; 
     static void subset(int x) 
     { 
      if(abc[0].equals("END")) 
      { 
       abc[0]=""+x; 
      } 
      else 
      { 
       int i,len=0,count=0; 
       for(i=0;i<abc.length;i++) 
       { 
        if(!abc[i].equals("END")){len=len+1;} 
       } 
       count=len; 
       wwf=""; 
       for(i=0;i<len;i++) 
       { 
        wwf=abc[i]; 
        wwf=wwf+"|"+x; 
        abc[count]=wwf; 
        count++; 
       } 
       abc[count]=""+x; 
      } 
     } 
     static void sub() 
     { 
      int len=set.length,i; 
      for(i=0;i<len;i++) 
      { 
       subset(set[i]); 
      } 
      /*int count=0; 
      for(i=0;i<abc.length;i++) 
      { 
       System.out.println("count:"+count+++"-----"+abc[i]); 
      }*/ 
     } 
     public static void main(String args[]) 
     { 
      for(int i=0;i<abc.length;i++) 
      { 
       abc[i]="END"; 
      } 
      sub(); 
      System.out.println(valid_subset()); 
     } 
    } 
+0

它是否給一個錯誤信息?如果是的話,你能把它放到問題中嗎? – ppeterka

+0

你的線路號碼是26? –

+1

我想26行是'abc [count] = wwf;' – jlordo

回答

0

你遍歷我,但沒有使用我在表達上線28

變位線28來自:

if(!abc[0].equals("END")){len=len+1;} 

if(!abc[i].equals("END")){len=len+1;} 
相關問題