發(fā)布時間:2011-09-16 共1頁
已知五個互不相同的正整數之和為23,且從這五個數中挑選若干個加起來可以表示從1到23之內的全部自然數。問這五個數是什么?
*問題分析與算法設計
從計算機程序設計的角度來說,可以用窮舉法分解23,然后判斷所分解的五個數是否可以表示1到23 之間的全部整數。
*程序說明與注釋
#include<stdio.h>
int main()
{
int a,b,c,d,e,i,j,k,l,m,x,count=0,f=0; /*f:分解的5個數可以表示出1~23的標記*/
printf("There are following possble result:\n");
for(a=1;a<=23;a++) /*將23分解為a,b,c,d,e五個數*/
for(b=1+a;b<=23-a;b++)
for(c=1+b;c<=23-a-b;c++)
for(d=1+c;d<=23-a-b-c;d++)
{
f=1;
if((e=23-a-b-c-d)>d)
for(f=0,x=1;x<24&&!f;x++) /*判斷5個數可否表示1~23*/
for(f=1,i=0;i<2&&f;i++) /*窮舉5個數的全部取舍*/
for(j=0;j<2&&f;j++)
for(k=0;k<2&&f;k++)
for(l=0;l<2&&f;l++)
for(m=0;m<2&&f;m++)
if(x==a*i+b*j+c*k+d*l+e*m) f=0;
if(!f) printf("[%d]: %d %d %d %d %d\n",++count,a,b,c,d,e);
}
}
*運行結果
There are following possble result:
[1]: 1 2 3 5 12
[2]: 1 2 3 6 11
[3]: 1 2 3 7 10
[4]: 1 2 4 5 11
[5]: 1 2 4 6 10
[6]: 1 2 4 7 9