暴力放苹果
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 27339 | Accepted: 17355 |
Description
Input
Output
Sample Input
1 7 3
Sample Output
8
1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <math.h> 5 #include <string.h> 6 using namespace std; 7 typedef long long ll; 8 int n,m,cou,a[100]; 9 void dfs(int k,int nn,int mm)///解法1 10 { 11 //printf("%d--",cou); 12 if(mm>m) return ; 13 if(nn==0) 14 { 15 if(mm<=m) 16 { 17 cou++; 18 } 19 return; 20 } 21 for(int i=k; i<=nn; i++)///第i个数不小于第i-1个数,这样不会造成重复。 22 {///如果是从1一直到nn,那么就会生成所有的排列情况,会有重复。 23 dfs(i,nn-i,mm+1); 24 } 25 } 26 int f(int nn,int mm)///解法2 27 {///整数划分 28 ///所谓n关于m的划分,就是n分成任意个非负数部分,但是每一个部分都不超过m 29 ///两种情况: 1 至少存在一个m,相当与n-m后再进行m的划分。 30 /// 2 不存在m,也就是n关于转化成m-1的划分。 31 if(nn<0) return 0; 32 if(nn==1||mm==1) return 1; 33 return f(nn-mm,mm)+f(nn,mm-1); 34 } 35 int main() 36 { 37 int t; 38 scanf("%d",&t); 39 while(t--) 40 { 41 scanf("%d%d",&n,&m); 42 /*{cou=0; 43 dfs(1,n,0); 44 printf("%d\n",cou);}*/ 45 printf("%d\n",f(n,m)); 46 } 47 return 0; 48 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。