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());
}
}
它是否給一個錯誤信息?如果是的話,你能把它放到問題中嗎? – ppeterka
你的線路號碼是26? –
我想26行是'abc [count] = wwf;' – jlordo