推理题——编程思维修炼

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

【问题区】

在一次竞赛中,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;
}


相关文章
|
1月前
|
开发者
从代码到哲学:编程中的思考与启示
【10月更文挑战第34天】在数字世界的编织中,每一行代码都蕴含着深邃的逻辑与创造的火花。本文通过探索编程的本质、代码与生活的关联、以及技术发展带来的社会影响,揭示编程不仅仅是技术的堆砌,更是人类智慧与哲学思考的体现。我们将一起走进代码的世界,发现那些隐藏在逻辑背后的哲理与人生启示。
|
2月前
|
算法
从代码到哲学:编程中的人生启示
【9月更文挑战第35天】在代码的世界中,我们不仅是在编写程序,更是在书写生活。每一行代码都蕴含着逻辑与美,每一个算法都承载着智慧与挑战。本文将通过编程的视角,探讨人生的意义、选择的重要性以及面对困难的态度,带你领略技术背后的深刻哲理。
|
1月前
从代码到哲学:编程中的思维模型与生活智慧
【10月更文挑战第35天】在编程的世界里,代码是构建数字宇宙的基石。本文将通过浅显的语言和实际代码示例,探讨编程思维如何影响我们的日常生活决策,并揭示技术背后的哲学思考。我们将一起探索代码的逻辑结构如何映射到生活的选择中,以及如何通过编程提升问题解决的能力。
38 2
|
2月前
|
算法 程序员
从代码到哲学:编程中的启示与人生思考
在编写代码的过程中,我们不仅构建程序,也在无形中编织着生活的哲理。每一行代码都像是生命中的一步,它们共同构成了复杂而精彩的生命之旅。本文将从编程的角度出发,探讨技术实践中的深刻启示,以及这些启示如何影响我们对生活、工作和自我成长的理解。
|
3月前
|
JavaScript 前端开发 Python
探索编程的本质:从代码到哲学的奇妙旅程
该文档指导如何安装NodeJS及PyExecJS。首先从官网下载并安装NodeJS,验证安装是否成功可通过命令`node --version`检查版本。PyExecJS则通过`pip install PyExecJS`进行安装。安装后,通过Python导入`execjs`模块可查看执行JS的环境,并使用`eval`和`compile`函数执行JavaScript代码或编译JS脚本。具体案例展示了简单的JS执行与环境选择方法。
18 1
|
4月前
|
存储 程序员 容器
从代码到哲学:编程中的启示与人生智慧
【8月更文挑战第31天】在编程的世界里,代码不仅仅是命令和逻辑的集合,它更像是一面镜子,反映出我们对待问题的态度和方法。本文通过探索编程中的一些基本原则和实践,揭示它们如何与我们日常生活中的决策和行为相互映射。从简单的代码片段到复杂的系统设计,每一步都蕴含着深刻的哲理,指引我们在面对生活和工作中的挑战时,如何保持清晰的思路和坚定的意志。文章将带领读者走进编程的内在世界,发现那些隐藏在代码行间的智慧和启示。
|
7月前
|
算法 UED
探索编程思维:不仅是代码,更是解决问题的艺术
【5月更文挑战第24天】 在数字世界的舞台上,编程不单是一系列指令的排列组合,它更是一种独特的思维方式。本文将深入探讨编程思维的本质及其在问题解决过程中的应用。我们将剖析编程思维如何影响逻辑构建、创新思考和系统分析,并通过实例说明如何将编程原则应用于日常生活和非技术领域。
|
7月前
每天拿小苹果(提高思维系列)
每天拿小苹果(提高思维系列)
|
7月前
|
人工智能 供应链 算法
探索编程思维的奥秘
【4月更文挑战第27天】 在数字化时代,编程已成为一种全新的语言艺术。本文将深入探讨编程思维的本质及其对现代社会的影响。不同于传统的摘要方式,我们将通过一系列故事和案例来揭示编程不仅仅是代码的堆砌,而是一种逻辑严密、创造性和解决问题的能力。文章将带领读者了解如何通过编程思维来优化生活和工作中的决策过程,并提升个人的逻辑分析能力。
|
7月前
|
数据挖掘 测试技术
批判性思维
批判性思维
120 0