• 暑假热身 D. 条形码设计


    校ACM队准备筹划向学校批请一个专用机房。但是为了防止它变成公用机房,FL建议采用刷卡进入的办法,她设计了一种条形码,每人都对应一个。这种大小为2*n的条形码由以下三种元素构成:1*2、2*1、2*2的长方形方格。但是我们同样也知道,很多人都容易在刷卡时把卡的位置搞反。为了避免机器错误的处理,我们认为下图的两种条形码是一样的(图中颜色只是为方便说明,不用考虑)。

    FL现在很想知道一个问题,就是用她的这种条形码编码方式,对于一个给定的长度n最多能有多少不同的条形码可供使用?  

     

    Input

    多组测试数据,每一行一个正整数n(n≤28),以n = 0时作为结束。 

     

    Output

    最与每一组数据,先输出“Case k:”,其中k代表case数,接下来输出一个数,可用的的条形码数目m(m不超过231.)

     

    Sample Input

    1
    2
    3
    4
    5
    0

    Sample Output

    Case 1:1
    Case 2:3
    Case 3:3
    Case 4:8
    Case 5:12

    2333这道题和万杰讨论出来的^_^。找递推,分n为奇数或偶数奇数一种情况,偶数两种情况,递推中间分开讨论。
    #include<stdio.h>
    #include<math.h>
    int d[100],b[100];
    int i,j,n;
    int main()
    {
        
        d[0]=0;
        d[1]=1;
        d[2]=3;
        d[3]=5;
        b[0]=0;
        b[1]=1;
        b[2]=3;
        b[3]=1;
        for(i=3;i<=28;i++)
        {
            d[i]=d[i-1]+d[i-2]*2;
            if(i%2!=0)
            {
                b[i]=d[(i-1)/2];
            }
            if(i%2==0)
            {
                b[i]=d[i/2]+d[(i-2)/2]*2;
            }
        }
        i=1;
        while(scanf("%d",&n)!=EOF&&n!=0)
        {
            j=(d[n]+b[n])/2;
            printf("Case %d:%d
    ",i++,j);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    linux文件IO操作篇 (二) 缓冲文件
    信号量和互斥锁的区别
    linux 无锁化编程
    C语言中 time相关的函数 头文件
    printf 打印字体和背景带颜色的输出的方法
    在win10环境下安装Cygwin,可以GCC编译
    学习《大话存储》
    linux内核态和用户态的信号量
    学习Makefile
    git 环境搭建
  • 原文地址:https://www.cnblogs.com/dzzy/p/4733987.html
Copyright © 2020-2023  润新知