📄 8-2-21.c
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/
#include <stdio.h>
#define N 20
int find( int n,int m,int *d,int c,int *pd ){
int r;
if ( n == 0 ) return 0; /* 已分解完成 */
if ( m == 0 || c == 0 ) return -1; /* 不可以分解 */
if ( n<*d ) return find( n,m, d+1,c-1,pd );
else {
*pd = *d;
r = find( n-*d,m-1,d, c, pd+1 ); /* 继续对剩余数作分解 */
if ( r >= 0 ) return r+1;
return find( n,m, d+1,c-1,pd );
}
}
void main(){
int n, m, k, i, p[N], *pptr = p ;
int d[ ] = { 100, 81, 64, 49, 36, 25, 16, 9, 4, 1 };
printf( "Enter n, m : " ); scanf( "%d %d",&n,&m );
k = find( n, m, d, 10, pptr );
if ( k <= 0 ) printf ( "No answer!\n" );
else {
printf( "%d = %d", n , p[0] );
for ( i = 1; i < k; i++ )
printf(" +%d", p[i] );
printf("\n");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -