您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  C趣味程序百例(23)和数能表示1~23的5个正整数 【注册男护士专用博客】          

C趣味程序百例(23)和数能表示1~23的5个正整数

www.nanhushi.com     佚名   不详 

73 和数能表示1~23的5个正整数
    已知五个互不相同的正整数之和为23,且从这五个数中挑选若干个加起来可以表示从1到23之内的全部自然数。问这五个数是什么?
*问题分析与算法设计
    从计算机程序设计的角度来说,可以用穷举法分解23,然后判断所分解的五个数是否可以表示1到23 之间的全部整数。
*程序与程序注释
#include<stdio.h>
void 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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目