1 条题解
-
0
C :
#include<stdio.h> int main() { int q(int ,int ); int n,r; scanf("%d",&n); r=q(n,n); printf("%d\n",r); //system("pause"); return 0; } 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 1+q(n,m-1); return q(n,m-1)+q(n-m,m); }
C++ :
#include<iostream> using namespace std; class BS{ int n,m; public: void q(int n,int m) { this->n=n; this->m=m; } int p(int n,int m) { if((n<1)||(m<1)) return 0; if((n==1)||(m==1)) return 1; if(n<m) return p(n,n); if(n==m) return p(n,m-1)+1; else return p(n,m-1)+p(n-m,m); }}; int main() { BS a; int N,M; cin>>N; M=N; a.q(N,M); a.p(N,M); cout<<a.p(N,M)<<"\n"; }
Java :
import java.util.Scanner; public class Main { /** * 整数划分算法 *@param number 要划分的数 *@param maxSplitter 最大划分元素 *@return int number能有多少种划分方法 *@author 小龙同学_CTGU *@version 2013-9-3 */ public static int split(int number, int maxSplitter) { if (number < 1 || maxSplitter < 1) return 0; if (number == 1 || maxSplitter == 1) return 1; if (number < maxSplitter) return split(number, number); if (number == maxSplitter) return (split(number, maxSplitter - 1) + 1); if (number > maxSplitter) return (split(number, maxSplitter - 1) + split((number - maxSplitter), maxSplitter)); return 0; } public static void main(String[] args) { Scanner scan=new Scanner(System.in); int a=scan.nextInt(); System.out.println(split(a,a)); scan.close(); } }
- 1
信息
- ID
- 927
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者