贴个Cè¯è¨çï¼*
æè¿° Description �0�2
�0�2 å°æ´æ°nåæk份ï¼ä¸æ¯ä»½ä¸è½ä¸ºç©ºï¼ä»»æ两份ä¸è½ç¸å(ä¸èè顺åº)ã
ä¾å¦ï¼n=7ï¼k=3ï¼ä¸é¢ä¸ç§åæ³è¢«è®¤ä¸ºæ¯ç¸åçã
1,1,5; 1,5,1; 5,1,1;
é®æå¤å°ç§ä¸åçåæ³ã
�0�2
�0�2 �0�2
�0�2 �0�2
�0�2è¾å
¥æ ¼å¼ Input Format �0�2
�0�2 è¾å
¥nï¼k (6<n<=200ï¼2<=k<=6) �0�2
�0�2 �0�2
�0�2 �0�2
�0�2è¾åºæ ¼å¼ Output Format �0�2
�0�2 ä¸ä¸ªæ´æ°ï¼å³ä¸åçåæ³ã�0�2
�0�2Input : 7 3
�0�2output: 4
*/
/*
解é¢æè·¯ï¼�0�2
æç¨çæ¯ä¸ç§æ¯è¾æ
¢çæç´¢æ©å±æ¹æ³ï¼
æ¯å¦ï¼
�0�27 = 1+6 6 åå¯ä»¥æ©å±æï¼6 = 1+5 å¾æ¾ç¶è¿æ¯ä¸ä¸ªéå½çè¿ç¨
�0�27 = 2+5 5 --> 5= 2+3 ä¸è¿è¦æ³¨æçæ¯ï¼åªè¦å¨æ©å±è¿ç¨ä¸ä¿è¯å½åææ©å±çå¼ä¸å°äºåä¸ä¸ªå³å¯
�0�27 = 3+4
*/
#include <stdio.h>
#define MAX 101
int n,k ;
long total = 0 ;
void fenjie(int s,int t,int end,int *sum)
{
�0�2 int p,q ;
�0�2 �0�2
�0�2 if(t == k)/*æ¾å°ä¸ä¸ª*/
�0�2 {
�0�2 total ++ ;
�0�2 /*for(q = 1 ; q <= k ; q++)
�0�2 printf("%d ",sum[q]);
�0�2 printf(" ");*/
�0�2 }
�0�2 �0�2
�0�2 else
�0�2 {
�0�2 for(p=s ; p<=end/2 ; p++)
�0�2 {
�0�2 sum[t] = p;
�0�2 sum[t+1] = end-p;
�0�2 �0�2
�0�2 fenjie(p,t+1,sum[t+1],sum); /*æ¹æ³æ¯ä»å½åç»ç¹æ©å±å¼åºï¼éå½è¿è¡æ±è§£*/
�0�2 }
�0�2 }
�0�2 �0�2
}
int main(void)
{
�0�2 int i,j,sum[MAX] = {0};
�0�2
�0�2 �0�2
�0�2 scanf("%d %d",&n,&k);
�0�2 �0�2
�0�2 for(i=1 ; i<=n/2 ; i++)
�0�2 {
�0�2 sum[1] = i ;
�0�2 sum[2] = n-i;
�0�2 �0�2
�0�2 fenjie(i,2,sum[2],sum);
�0�2 }
�0�2 printf("%ld ",total);/*output the result*/
�0�2 �0�2
�0�2 �0�2
�0�2 return 0 ;
}
温馨提示:答案为网友推荐,仅供参考