首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请来指点

2012-03-15 
请高手进来指点最近学到欠套循环,感觉很晕,比如这道题甲、乙两个城市有一条999公里长的公路。公路旁每隔一公

请高手进来指点
最近学到欠套循环,感觉很晕,比如这道题
甲、乙两个城市有一条999公里长的公路。公路旁每隔一公里竖立着一个里程碑,里程碑的半边写着距甲城的距离,另半边写着距乙城的距离。有位司机注意到有的里程碑上所写的数仅用了两个不同的数字,例如000/999仅用了0和9,118/881仅用了1和8。算一算具有这种特征的里程碑共有多少个,是什么样的?                                                 (答案:40个)
分析:从题意中可知每对数仅用了两个不同的数字,并且两个数字之和衡等于9.并且,每对数之和也应衡等于999.
解法一:   该解法利用三重循环分别求出每个数字的各位数.因为每个数最多只用两个不同的数字,所以每个数中至少有2个数字是相同的.再根据两个不同数字之和衡等于9,不难得出如下求解过程:(里程碑1.c)
main()
          {int   i,j,k,m,n=0;
            for   (i=0;i <=9;i++)
              for   (j=0;j <=9;j++)
                for   (k=0;k <=9;k++)
                  if   (((i==j)&&(9-i==k))||((i==k)&&(9-i==j))||((j==k)&&(9-k==i))||((i==j)&&(j==k)))
      {m=i*100+j*10+k;
        printf( "%d/%d   ",m,999-m);
        n++;
  }
        printf( "\n具有这种特征的里程碑共有%d个. ",n);
      }
到底为什么用欠套循环,并请高手帮着分析一下此题,并说明如何意识到用欠套循环

[解决办法]
乘法原理。

一个问题能够分解为N步骤,
每个步骤有若干解法,
则可以使用 嵌套 N 层循环 ...

热点排行