⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8-2-21.c

📁 2005软件工程师考试下午编程题源代码
💻 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 + -