代码说

code is poetry

代码说    
碎碎念:划破夜空,赛车让你热血沸腾!  换一换

巧用循环嵌套解决逻辑判断问题

作者:coderzheng 发布于:2014-7-15 16:58 Tuesday 分类:other  阅读模式

关于逻辑判断的问题有多种形式,有的是给出结果要判断条件,有的则反过来,不管是哪种形式,只要把握基本准则,使用循环嵌套即可轻松解决此类问题。
 
问题引入:
   题设:命题A或真或假(只可能是真或者假,不存在中间状态),命题B或真或假,命题C或真或假。。。
   已知:当A真(假)时,B真(假),且当AC同时真时B假。。。
      求:A、B、C.....各自的真值
 
典型解法(C):
include"stdio.h";
void main()
{
      int a=0,b=0,c=0,d=0,e=0,f=0,g=0;
      for(a=0;a<2;a++)
      {
        for(b=0;b<2;b++)
          for(c=0;c<2;c++)
            for(d=0;d<2;d++)
              for(e=0;e<2;e++)
               for(f=0;f<2;f++)
                for(g=0;g<2;g++)
                 {
                    if( (b&&!c&&a) && (c&&!a&&!b)&& ... )   {
                       printf("%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f);
                    }
                 }
       }     
} 
补充:
详细步骤应为:
1、剥离命题
对于:当A真(假)时,B真(假)这样的命题,要将 其中的当 A 中的A看做是基本命题。要注意,当....时 这个题设可能不一定是简单的基本命题,可能是一个嵌套的复合命题,这时就必须进一步剥离出基本命题,直到最后已知中出现的陈述可以表述为 (b&&!c&&a) && (c&&!a&&!b)&& ...这种形式,这样一来,在for循环中,必定得到一组基本命题的真值,这实际就是问题的解。
2、写for循环
3、在最内层的循环语句中,加判断条件,输出组值。

标签: 算法

你可以发表评论、引用到你的网站或博客,或通过RSS 2.0订阅这个博客的所有文章。
上一篇: 使用php数组的array_merge函数  |  下一篇:C语言中函数如何返回数组