zoukankan      html  css  js  c++  java
  • 扑克牌翻牌问题(递归)

    扑克牌翻牌问题

    题目描述:

    有52张牌,使它们全部正面朝上,从第2张开始,凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,凡是3的倍数位置上的牌,正面朝上的翻成正面朝下,正面朝下的翻成正面朝上;接着第三轮从第4张牌开始,凡是4的倍数位置上的牌按上面相同规则翻转,以此类推,直到第1张要翻的牌是第52张为止。统计最后有几张牌正面朝上,以及它们的位置号。
    输出:
    1,4,9,16,25,36,49,
     
    代码如下:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    bool card[100];
    void turn(int x)
    {
    if(x>52)return;
    for(int i=x;i<=52;i+=x)
    {
    card[i]=!card[i];
    }
    turn(x+1);
    }
    int main()
    {
    memset(card,1,sizeof(card));
    turn(2);
    for(int i=1;i<=52;i++)
    {
    if(card[i])
    cout<<i<<endl;
    }
    return 0;
    }

    /*运用了递归算法,从2的倍数一直翻到52的倍数,不断地重复着类似的事情,采用递归去做;
    一个知识漏洞 bool a[30]={1},这是刚开始赋值时,只是a[0]=1;因为全局赋值只能全部赋值0,即a[30]={0}
    接下来进行一下扩展:
    完全平方数的约数的个数是奇数。普通合数和质数的约数个数为偶数。
    因为一个数的约数一定是两两出现的,但是完全平方数其中一对约数是一样的,所以其约数是奇数个;
    分析:因为一开始时正面,最后也是正面,那么一定最后是正面的被翻了偶数次,最后是反面的一定被翻了奇数次;
    所以 最后是正面的数 都是完全平均数。
    以上 是我在网上学到的*/
  • 相关阅读:
    响应式布局
    CSS3过渡
    CSS3背景
    CSS渐变
    CSS3选择器
    CSS3
    自定义指令
    键盘修饰符
    过滤器
    v-if与v-show区别
  • 原文地址:https://www.cnblogs.com/zzyh/p/6601764.html
Copyright © 2011-2022 走看看