众所周知,数学逻辑无孔不入,那么如何结合自己想奥数题的逻辑来编写代码呢

目录

1.猜凶手

2.猜名次

3.杨辉三角


1.猜凶手

题目

A说:不是我。

B说:是C。

C说:是D。

D说:C在胡说

已知3个人说了真话,1个人说的是假话。那么谁是凶手

首先,一个人是不是凶手怎么表达呢,可以用1/0,凶手记为1

所以ABC三个人都有两种可能性,凶手1,好人0

那么就是一个排列组合问题,对应代码就是循环

其中的一个分叉是这样的

观察发现,A==1结果是1    A!=1  的结果是0

如果三个人说的是真的,那么这四个人的话用代码表达出来变成四个表达式

四个表达式之和就应该=3

但是仅仅这样写,发现结果不止一个

因为我们遗漏很重要的显然条件凶手只有一个

那么四个人加起来=1

答案呼之欲出

//猜凶手
//A说:不是我。
//
//B说:是C。
//
//C说:是D。
//
//D说:C在胡说
//
//已知3个人说了真话,1个人说的是假话。
#include<stdio.h>
int main()
{int A, B, C, D;for (A = 0; A <2; A++){for (B = 0; B <2; ++B){for (C = 0; C <2; ++C){for (D = 0; D <2; ++D){if ((!A)+(C)+(D)+(!D)==3&&A+B+C+D==1)printf("A=%d B=%d C=%d D=%d\n", A, B, C, D);}}}}}

2.猜名次

题目

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

有了上个题目的铺垫,这个题的思路就自然很多,循环从上个题目的3层,变成5层,因为有5个人

同样是每个人的两个判断表达成两个表达式,

由于吗,每个人只有一半说对了

所以一个人说的两句话相加应该=1

并且五个人一定要每个人都有名次,也就是12345

所以五个人相乘应该等于1*2*3*4*5=1203.

答案已经出来了

//5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
//A选手说:B第二,我第三;
//
//B选手说:我第二,E第四;
//
//C选手说:我第一,D第二;
//
//D选手说:C最后,我第三;
//
//E选手说:我第四,A第一;
//
//比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
#include<stdio.h>
int main()
{int A, B, C, D, E ;for (A = 1; A <= 5; A++){for (B = 1; B <= 5; ++B){for (C = 1; C <= 5; ++C){for (D = 1; D <= 5; ++D){for (E = 1; E <= 5; ++E){if ((B == 2) + (A == 3)==1 && (B == 2) + (E == 4) == 1 && (C == 1) + (D == 2) == 1 && (C == 5) + (D == 3) == 1 && (E == 4) + (A == 1) == 1 &&A*B*C*D*E==120)printf("A=%d B=%d C=%d D=%d E=%d", A, B, C, D, E);}}}}}
}

以上两个题是一类问题:判断n个人,每个人说了m句话,其中只有一部分是对的,最后找到结论

思路:

把人抽象为数字,比如用名次12345...代表,或者0/1代表是不是凶手,好人之类

然后写n层循环

每个人的话写成m个表达式

具体分析什么条件(if)成立,则题目得解


3.杨辉三角

具体运算我们都知道,但是如果只是这样很直白的想,是很难实现的

数学解法是直白的,但是代码实现是灵活的

一个数等于上方两个数之和

int main()
{int n;scanf("%d", &n);int a[100][100];for (int i = 0; i < n; i++){a[i][0] = 1;a[i][i] = 1;    //将每行的第一个和最后一个赋值为1 }for (int i = 2; i < n; i++)      //已知每个数等于它上方两数的之和 {for (int j = 1; j < i; j++){a[i][j] = a[i - 1][j - 1] + a[i - 1][j];}}for (int i = 0; i < n; i++)     //打印输出 {for (int j = 0; j <= i; j++){printf("%d ", a[i][j]);}printf("\n");}
}

【猜凶手,猜名次,杨辉三角】经典小学奥数的代码逻辑是什么?相关推荐

  1. JAVA——实现杨辉三角的指定行数输出

    实现杨辉三角的指定行数输出 1.要求 杨辉三角是一个由数字排列的三角形数表,此方法介绍如何实现控制台输出杨辉三角形. 2.杨辉三角 杨辉三角最本质的特征是:除两侧元素均为1以外,其余每个位置上的元素值 ...

  2. leetcode119. 杨辉三角 II 你能比我代码更短吗?

    给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 示例: 输入: 3 输出: [1,3,3,1]按照定义写即可. class Solution:def getRow(self, r ...

  3. 经典算法(5)杨辉三角

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

  4. 算法--组合数学:杨辉三角数学分析以及Java实现

    1.定义 杨辉三角,是二项式系数在三角形中的一种几何排列. 下图为杨辉三角部分数据 2.杨辉三角规律 前提:每行端点与结尾的数为1 最重要的规律: 每个数字等于上一行的左右两个数字之和.可用此性质写出 ...

  5. HTML 杨辉三角,杨辉三角 - 哼哼哈嘿 - OSCHINA - 中文开源技术交流社区

    //杨辉三角 n为 行数 function yanghui(n) { /* 逻辑思考 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 这是一个杨辉三角:是计算二 ...

  6. HDU 6129 Just do it 组合数学 杨辉三角 递推

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6129 题目描述: 将a序列转化成b序列, b[i] = a[1]^a[2]^a[3]^a[4]^.. ...

  7. 列表生成式的复习以及生成器的练习, 杨辉三角实例(非常巧妙)

    列表生成式 print('昨日复习--------------------') d = {'a':1, 'b':2, 'c':3} for key in d:print(key)for value i ...

  8. 从标数法求最短路径数到杨辉三角的思考

    上周旁听了一节小小的学而思数学网课,写一篇心得.一直想写的,但工作日一直都在忙,今天终于有所闲暇,就坐下来写点吧. 上周日,我蹲在边上写代码,小小把电脑搬到餐桌上学而思网课,我侧耳被一道题目吸引了. ...

  9. 曾经vb,c ,c++,python,写过的杨辉三角,致敬杨老前辈

    // 杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列.杨辉三角形同时对应于二项式定理的系数. 直角三角形杨辉三角 //c语言,求直角的 #include<stdi ...

最新文章

  1. GT Transceiver中的重要时钟及其关系(3)多个外部参考时钟使用模型
  2. oracle数据库批量操作系统,Oracle批量操作数据库
  3. Machine Learning之Python篇(二)
  4. java中GET方式提交和POST方式提交
  5. 火狐、IE浏览器实现Extjs的grid表格的复制、粘贴
  6. 代码自解释不是不写注释的理由
  7. HEC-RAS二维溃坝洪水模拟(尾矿库)
  8. java 从键盘中读取字符流 自定义异常
  9. mac docker 共享_如何在Docker for Mac中加快共享文件访问
  10. Linux下改动Oracle数据库字符集命令
  11. 人的差别在于业余时间——细细品味 ==程序员学习能力提升三要素 ==》程序员学习能力提升三要素 ==编程从业五年的十四条经验,句句朴实
  12. 【python算法】算法之线性增长与二次方增长小实验举例
  13. 猜拳小游戏(Java代码实现)
  14. N卡驱动安装闪退,安装程序无反应,重装无效,不重装系统解决方法
  15. LoRa SX1278通信代码学习笔记
  16. 旅行青蛙(旅かえる)的最全攻略(不懂日语的可以看看)
  17. 用python画一个简单卡通人物,Python绘制可爱的卡通人物 | 【turtle使用】
  18. linux 手机 rom image,安卓手机刷机界面image 文件夹什么意思 里面的文件都是什么作用...
  19. CALCULATE函数的运算顺序-第一弹
  20. sklearn机器学习(五)线性回归算法测算房价

热门文章

  1. 京城雪场吃住玩全攻略
  2. 看门狗watch_dog.sh的部署
  3. javascript经典特效(二)
  4. AutoCAD 二次开发 AutoLISP画图 题目:和的平方、极坐标四叶曲线、阿基米德螺旋线
  5. lambda表达式——类名::实例方法
  6. Win Server 2003 P2V迁移方法
  7. Word2013为文档添加多种页码格式
  8. GOOD BYE OI
  9. oracle 分区表空间压缩,Oracle 压缩表/表空间
  10. 【一帘幽梦】英语之路——10