您的位置:首页 > 其它

出现的一些好的笔试题目

2010-10-27 20:34 267 查看
之前在腾讯笔试上就出现了一次下面提到的这道题,今天中关村某公司的面试题目又出现这一题目~

由于是编程的题目,具体说是程序填空题,因为某些原因程序没有记录下来,但是又非常想知道这道题的解法

望高手给予帮助阿~谢谢

对一个整数,可以分解成某些整数之和,例如

4=4

4=3+1

4=2+2

4=1+1+1+1

编程实现,采用递归或者非递归方式来实现!

/******************************
* *
* haison根据网上程序修改 *
* --2007.10.17 *
* *
******************************/
#include<stdio.h>
#define N 3
#define MAX 100

/******************************************
*a[]——存储分解出来的和数
*a[k]——第k步分解出来的和数。
*r[k]——存储分解出和数a[k]后,还未分解的余数。
*******************************************/
int a[MAX],r[MAX];
/*分解函数声明*/
void detachInt(int value);

int main()
{

int arr
={3,4,5}; /*欲分解的数*/

for(int i=0;i<N;i++)
{
printf("Begin to detach %d as follows:n",arr);
detachInt(arr);
printf("End detach %dnn",arr);
}

return 0;
}
/*分解函数实现*/
void detachInt(int value)
{
int k=0,i;

a[0]=r[0]=value;

while(1)
{
if(r[k]==0)
{

printf("%d=%d",a[0],a[1]);

for(i=2;i<=k;i++)
printf("+%d",a);

printf("n");

while(k>0 && a[k]==1)
k--; /*回溯*/

if(k==0)
break;
a[k]--;
r[k]++;
}
else
{
a[k+1]=r[k]<a[k]?r[k]:a[k];
r[k+1]=r[k]-a[k+1];
k++;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: