拓扑学 应用

方格染色问题

题目

 输入格式

  输入一行包含两个整数n, m,用一个空格分隔。

输出格式

  输出一个整数,表示被染成红色的格子数量。

分析

这种方格染色问题,需要转换思维,才能做出来。

第一步,不管长方形是竖着放,还是横着放,并不影响红色方格的数量。所以,程序输入m,n,统一将大的数作为m,便于之后的计算。

   int n, m, t, hong1, hong2;

   cin >> n >> m;
    if (n > m) {
        t = m;
        m = n;
        n = t;
    }

这段程序就是将输入的m,n按照大小排列。大的值是m,下一步分析m即可。

第二步,如果m是3的倍数,那么因为三种颜色均分了整个地板,那么红色方块就是m*n/3。

    if (m % 3 == 0) {
        hong1 = (m * n) / 3;
        cout << hong1;
    }

第三步,如果m不是3的倍数,m除以3,余数如果是1,那么就等价于第二步算的地板hong1,再加上一列(n个正方形),只需要算这一列有多少个红色。根据图可知,这一列的第一个是红色方块,每三个方块形成一个周期循环。 如果hong2是3 的倍数,红色方块hong2 = n / 3;如果hong2不是3的倍数,因为每次三个方块中第一个是红色方块,那么总共的hong2 = n / 3 + 1

    else if (m % 3 == 1) {
        hong1 = ((m - 1) * n) / 3;
        if (n % 3 == 0)
            hong2 = n / 3;
        else
            hong2 = n / 3 + 1;
        cout << hong1 + hong2;
    }

第四步,如果m不是3的倍数,m除以3,余数如果是2,那么我们补上缺少的一列,便于计算hong1,然后减去之前补上的这一列中的红色方块hong2。补上的这一列,红色方块每次在第2个位置。所以如果n除以3余数是2,红色方块就得再加上1。

    else if (m % 3 == 2) {
        hong1 = ((m + 1) * n) / 3;
        if (n % 3 == 0 || n % 3 == 1)
            hong2 = n / 3;
        else if (n % 3 == 2)
            hong2 = n / 3 + 1;
        cout << hong1 - hong2;
    }

备注:既可以写成    if (n % 3 == 0 || n % 3 == 1),hong2 = n / 3;也可以将这种情况统一作为 (n % 3 == 2)情况的else

解答

#include <iostream>
using namespace std;

int main() {
    int n, m, t, hong1, hong2;
    cin >> n >> m;
    if (n > m) {
        t = m;
        m = n;
        n = t;
    }

    if (m % 3 == 0) {
        hong1 = (m * n) / 3;
        cout << hong1;
    }

    else if (m % 3 == 1) {
        hong1 = ((m - 1) * n) / 3;
        if (n % 3 == 0)
            hong2 = n / 3;
        else
            hong2 = n / 3 + 1;
        cout << hong1 + hong2;
    }

    else if (m % 3 == 2) {
        hong1 = ((m + 1) * n) / 3;
        if (n % 3 == 0 || n % 3 == 1)
            hong2 = n / 3;
        else if (n % 3 == 2)
            hong2 = n / 3 + 1;
        cout << hong1 - hong2;
    }


    return 0;
}
 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《拓扑学基础及应用》是一本由中国人民大学出版社出版的学术著作,全书共12章,涵盖了拓扑学的基础知识、拓扑空间、连续映射与同胚、拓扑性质与性质的保持、度量空间、拓扑空间上的连续函数、紧性及其判定、局部紧性及其判定、拓扑补充、连续映射与拓扑空间的等价关系、拓扑空间上的分离性以及拓扑空间上的紧性与局部紧性等重要的概念、方法和技巧。 这本书适用于数学专业的学生、教师和研究生,特别是对拓扑学感兴趣的人。通过学习这本书,可以加深对拓扑概念的理解,掌握拓扑方法及其应用。尤其对于从事数学、物理、天文、神经科学、计算机科学等领域研究的人员,可以提供更为广泛的思维框架与方法,有助于提升其研究水平。 此外,《拓扑学基础及应用》还涵盖了大量实际问题的拓扑分析方法,可以帮助研究人员解决实际问题。例如,在计算机科学中,该书内容可以用于解决网络拓扑问题和算法设计问题;在神经科学中,可以用于解释脑神经网络的迭代为;在物理学中,可以用于分析空间结构特性;在经济学等社会学科中,可以用于分析市场、社会网络等诸多问题。 总之,《拓扑学基础及应用》是一本非常有价值的学术著作,可以为拓扑学领域的研究者和学生们提供深入细致的分析、丰富多彩的思路,对推动学科发展有着积极的作用。 ### 回答2: 拓扑学基础及应用pdf是一本关于数学拓扑学的书籍,其中包含了拓扑空间、连通性、紧性、欧几里德空间、曲面、同胚、同调论等基础概念,以及相关的应用和例题。 拓扑学是一门研究空间变形和连续性的数学学科。它强调的是空间形态不变的特性,即依靠变形不断构建新的结构,使得变形前后的空间拥有相同的拓扑属性。例如,一个圆可以通过拉伸变形成为椭圆,但它们的拓扑属性是相同的。 拓扑学在物理学、天文学、生物学等许多学科中都有广泛的应用。例如,地图的制作需要使用拓扑学的原理,将三维的地球表面映射为平面的地图;生物学家也利用拓扑学来研究分子之间的相互作用和复杂的生物网络。在计算机科学中,拓扑学可以用来分析网络拓扑结构、社交网络等问题。 本书不仅为数学专业的学生提供了一些基本概念和定理,还向其他领域的学生介绍了拓扑学应用。本书以清晰简洁的语言介绍了各种概念,包括示例、定义、定理和证明等。此外,本书还通过例题和练习,帮助读者更好地理解和掌握拓扑学。 总之,拓扑学基础及应用pdf是一本介绍数学拓扑学相关概念和应用的书籍,通过该书的学习和练习,读者能够更全面地了解拓扑学这一学科,提高自己的数学思维水平,并应用到其它学科中。 ### 回答3: 《拓扑学基础及应用PDF》是一本关于拓扑学的学习资料。拓扑学是数学的一个重要分支,研究的是空间中的形状和位置关系。它在各个领域都有广泛的应用,如天文学、地理学、化学、计算机科学等。 此书分为两个部分。第一部分介绍了拓扑学的基础知识,包括拓扑空间、连通性、紧性、收缩等概念和定理。第二部分介绍了一些拓扑学应用,如结构化学、图形理论、网络分析等。 此书的优点在于:将拓扑学的基础知识描述得浅显易懂,适合初学者学习;应用部分内容涵盖面广,对拓扑学应用具有一定的启发意义。同时,此书也有一些不足之处,如有些定理的证明过于简略,不够详细,需要补充其他资料进学习。 总体来说,此书是一本较为全面的拓扑学资料,适合初学者和拓扑学领域的研究人员使用,有助于深入了解拓扑学的基础及应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值