推理题——编程思维修炼

简介: 推理题——编程思维修炼

【问题区】

在一次竞赛中,A、B、C、D、E 等五人经过激烈的角逐,最终取得了各自的名 次,他们的一个好朋友很遗憾没有观看到比赛,在比赛结束后这个朋友询问他们 之间的名次是得知:C 不是第一名,D 比 E 低二个名次,而 E 不是第二名,A 即不是第一名,也不是最后一名,B 比 C 低一个名次。编写程序,计算这五个 人各自的名次并输出。


提示:

这是一道逻辑推理题。其中的关键点在 D 比 E 低两个名次,那么 D 和 E 的位 置只可能在(1,3)、(2,4)或(3,5),而 E 不是第二名,后面还有其他 条件,这下你懂了吧?


代码如下:

#include <iostream>
#include <Windows.h>
using namespace std;
int logic_reasoning(char cur[5])
{
  int flag = 0;
  if (cur[0] == 'C')
  {
    return 0;
  }
  if (cur[1] == 'E')
  {
    return 0;
  }
  if (cur[0] == 'A' || cur[4] == 'A')
  {
    return 0;
  }
  for (int i = 0; i < 3; i++)
  {
    if (cur[i] == 'E' && cur[i + 2] == 'D')
    {
      flag = 1;
    }
  }
  if (flag == 0)
  {
    return 0;
  }
  flag = 0;
  for (int i = 0; i < 4; i++) 
  { //B 比 C 低一个名次
    if (cur[i] == 'C' && cur[i + 1] == 'B')
      flag = 1;
  }
  if (flag == 0)
  {
    return 0;
  }
  return flag;
}
int main(void)
{
  char a[] = { 'A','B','C','D','E' };
  char b[5] = { '\0' };
  for (int i0 = 0; i0 < 5; i0++)
  {
    b[0] = a[i0];
    for (int i1 = 0; i1 < 5; i1++)
    {
      if (b[0] == a[i1])
      {
        continue;
      }
      b[1] = a[i1];
      for (int i2 = 0; i2 < 5; i2++)
      {
        if (b[0] == a[i2] || b[1] == a[i2])
        {
          continue;
        }
        b[2] = a[i2];
        for (int i3 = 0; i3 < 5; i3++)
        {
          if (b[0] == a[i3] || b[1] == a[i3] || b[2] == a[i3])
          {
            continue;
          }
          b[3] = a[i3];
          for (int i4 = 0; i4 < 5; i4++)
          {
            if (b[0] == a[i4] || b[1] == a[i4] || b[2] == a[i4] || b[3] == a[i4])
            {
              continue;
            }
            b[4] = a[i4];
            if (logic_reasoning(b))
            {
              for (int i = 0; i < 5; i++)
              {
                printf("%c  ", b[i]);
              }
              printf("\n");
            }
          }
        }
      }
    }
  }
  system("pause");
  return 0;
}


相关文章
|
2天前
编码之道:从函数式思维到系统设计的艺术
【5月更文挑战第21天】在技术的海洋中,编程不仅仅是一种技能,更是一种艺术。本文将探讨如何通过函数式编程的思维来提升代码的简洁性和可维护性,并进一步拓展到系统设计的层面,阐述如何构建一个既优雅又高效的系统架构。我们将从微观的代码编写细节出发,逐步过渡到宏观的系统设计理念,以期给读者带来全新的技术视角和深刻的技术感悟。
|
8天前
|
人工智能 供应链 算法
探索编程思维的奥秘
【4月更文挑战第27天】 在数字化时代,编程已成为一种全新的语言艺术。本文将深入探讨编程思维的本质及其对现代社会的影响。不同于传统的摘要方式,我们将通过一系列故事和案例来揭示编程不仅仅是代码的堆砌,而是一种逻辑严密、创造性和解决问题的能力。文章将带领读者了解如何通过编程思维来优化生活和工作中的决策过程,并提升个人的逻辑分析能力。
|
8天前
|
算法 程序员 测试技术
探索代码之美:我的编程哲学
【4月更文挑战第23天】 在数字化的浪潮中,编程已成为一种艺术形式。本文将分享作者在编程实践中形成的技术感悟和哲学思考。从代码的简洁性到系统的可维护性,从快速迭代到持续学习,作者将阐述如何在追求技术卓越的同时保持对生活的热爱和好奇心。这不仅是一篇关于编程技能提升的指南,更是一次关于如何以程序员身份在快速变化的技术世界中寻找定位的思考之旅。
|
6月前
|
C语言
什么叫编程思维
什么叫编程思维
|
10月前
|
算法
编程的辩证思维的思考
编程是一门富有创造性和逻辑思维的艺术。在编程过程中,我们不仅要解决具体的问题,还需要运用辩证思维来思考和分析各种可能性。辩证思维是一种超越二元对立的思考方式,它能够帮助我们更全面、深入地理解问题,并找到更好的解决方案。
227 0
|
10月前
|
设计模式 算法 程序员
培养编程思维的关键——从最基础开始
在当今信息时代,编程已经成为一项不可或缺的技能。而要成为一名优秀的程序员,除了掌握具体的编程语言和工具,更重要的是培养良好的编程思维。本文将从最最基础的层面入手,探讨如何培养编程思维。
159 0
|
11月前
|
算法
谈一谈|编程中的数学思维
谈一谈|编程中的数学思维
112 0
|
人工智能 算法 安全
8种提升程序猿编程能力的方法+编程思维四个核心:分解、抽象、模式识别和算法
对于程序员来说,提高自己的编程能力,算是给自己定的职业发展目标之一,不过定一个成为编程大神的目标很容易,具体做起来可能就不是一件简单的事了。首先,既然决定“我要变得更好”,得先知道“更好”是什么样子的。另外,不能“想变得更好”,却没有任何具体可行的措施。
706 2
8种提升程序猿编程能力的方法+编程思维四个核心:分解、抽象、模式识别和算法
|
存储 程序员 开发者
所谓“编程思维”,到底是什么呢?
无论是对于成人,还是对于孩子,大家都在说,应该培养和训练“编程思维”。那么,到底什么才是“编程思维”呢?这个问题我思考过很久。若从大约1995年我写下第一行“10 PRINT 1+2”代码算起,至今我的码龄也快三十了,那我就倚老卖老,来谈谈这个其实总也不太谈得清的话题。
136 0
所谓“编程思维”,到底是什么呢?
|
架构师 程序员
提高程序员思维的几本书
提高程序员思维的几本书
230 0

热门文章

最新文章