第一讲、整数划分(分治实现之二)

来源:互联网 发布:宾馆软件破解版 编辑:程序博客网 时间:2024/06/05 06:49
package junior2015;


 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 public class Junior2015p5{
 
public static void fun(int[] str,int n,int m,int k,int k1) throws IOException 
{                  



if(n>0)          
{                      
for(int i=n;i>=1;i--)                  
{               
if(m==0)  
{System.out.println();k++;}
if(m==0||i<=str[m-1])
{                             
str[m]=i;                             
fun(str,n-i,m+1,k,k1); 
}
}           
}                        
else 

int []result=new int[20];
int rn=0;

for(int i=0;i<=m-1;i++)
{  

if(i==(m-1)) 
{

if (k==(m-1))
{
System.out.print(str[i]);
}
else
{
System.out.print(str[i]+",");
rn++;
}

}
else
{
rn++;
result[i]=str[i];
System.out.print(str[i]+" "); 
}
}



}
}

public static int q(int n,int m)
{
if(n<1||m<1)return 0;
if(n==1||m==1)return 1;
if(n<m)return q(n,n);
if(n==m)return q(n,m-1)+1;
return q(n,m-1)+q(n-m,m);

}                  

 


   
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str1=br.readLine();
String str2=br.readLine();
// Scanner scanner = new Scanner(System.in);
// System.out.print("请输入一个数: ");
// int n = scanner.nextInt();
//输入数
fun(new int[Integer.parseInt(str1)],Integer.parseInt(str1),0,-1,Integer.parseInt(str2));
System.out.println();
//得出结果

int result=q(Integer.parseInt(str1),Integer.parseInt(str1));
System.out.println();
System.out.println(result);
}
 
 } 
0 0
原创粉丝点击